프로세스 당 디스크 할당량을 설정하는 방법은 무엇입니까?

프로세스 당 디스크 할당량을 설정하는 방법은 무엇입니까?

Linux에서 특정 프로세스가 사용할 수 있는 디스크 할당량을 설정하고 싶습니다(파일 시스템에서 사용되는 최대 공간 제한). 사용자의 디스크 할당량을 제한하는 방법이 있는 것 같지만 프로세스별 세분성은 없습니다. 제가 고려할 수 있는 한 가지 접근 방식은 프로세스별로 사용자를 생성하는 것입니다. 하지만 상상할 수 있듯이 이는 훌륭한 솔루션이 아닙니다.

답변1

프로세스가 파일을 소유하지 않아 디스크 할당량을 가질 수 없기 때문에 다른 사용자 계정으로 처리하는 것이 유일한 방법일 가능성이 높습니다.

더 명확하게 말하면, 이와 같은 커널 패치를 개발하면 현재 사용되는 최대 파일에 대한 할당량을 관리할 수 있지만 이전에 작성되고 닫힌 파일을 추적하는 것은 여전히 ​​의미가 없으며 단순히 책임 범위에 포함되지 않습니다.

이러한 결함이 있는 패치를 구현하면 상당한 성능 저하가 발생하며 여러 프로그램에서 동일한 파일이 열려 있는 상황에서는 의미가 없습니다.

이러한 이유와 기타 여러 가지 이유로 인해 이론상으로는 올바르게 수행할 수 없습니다.

답변2

ulimit를 사용할 수도 있습니다. 정확히 할당량은 아니지만 비슷합니다.

ulimit -f 1000

현재 셸 또는 현재 셸에서 호출된 프로세스에서 생성된 파일의 최대 크기를 각각 1000KB로 제한합니다. 내가 말했듯이, 필요한 경우 프로세스가 한도 내에서 많은 파일을 쓸 수 있기 때문에 할당량은 아니지만 수행하려는 작업에 따라 작동할 수 있습니다.

tcsh에서 명령은 ulimit 대신limit이며 약간 다른 구문을 사용할 수 있습니다.

관련 정보