Ubuntu에서 사용자의 RAM을 제한하는 방법은 무엇입니까? [복사]

Ubuntu에서 사용자의 RAM을 제한하는 방법은 무엇입니까? [복사]

현재 Ubuntu를 실행하는 전용 서버에 계정을 가지고 있는 "친구"가 있습니다. 구체적인 내용은 공개되지 않았지만 최대 2GB 정도를 사용한다고 했고, 10GB 정도를 사용하고 있다고 합니다. 질문에 답해 보세요. 계정의 최대 크기를 3GB로 제한할 수 있는 방법이 있나요? 프로세스를 종료하는 것도 작동합니다.

인터넷 검색을 해봤지만 아직 해결책을 찾지 못했습니다./

답변1

이 작업을 수행하는 더 좋은 방법이 거의 확실하게 있습니다. 아마도 limits.conf다음을 통해 알 수 있지만 이것은 더러운 해킹입니다.

terdon이 명령은 3G 이상의 RAM을 사용하는 사용자가 소유한 모든 프로세스를 종료합니다 .

ps -u terdon -o vsize= -o pid= | 
    while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; 
done

ps -u terdon -o vsize= -o pid=명령은 소유한 각 프로세스에서 사용하는 PID와 메모리(1024바이트 단위)를 인쇄합니다 terdon. 물론 친구의 사용자 이름을 사용하려면 이를 조정해야 합니다. 그런 다음 명령의 출력은 ps메모리 사용량과 pid를 읽고 3145728K 이상의 메모리를 사용하는 경우 PID를 종료하는 while 루프를 통해 전달됩니다.

이제 루트로 실행되는 crontab으로 추가하면 매분 실행되어 허용한 것보다 더 많은 RAM을 사용하는 프로세스가 종료됩니다. 따라서 다음 행을 추가하십시오 /etc/crontab.

* * * * * root ps -u terdon -o vsize= -o pid= | while read mem pid; do [ $mem -gt 3145728 ] && kill $pid; done

내가 말했듯이 이것은 우아하지 않고 추악한 해킹이지만 충분할 수 있습니다.

관련 정보