공유 서버에서 다른 사용자 (루트 권한이없는)가 리소스를 필요로 할 때마다 낮은 우선 순위의 사용자 프로세스를 종료 할 수 있도록 우선 순위가 매우 낮은 사용자를 원합니다.
그런 것을 허용 할 수 있습니까?
공유 서버에서 다른 사용자 (루트 권한이없는)가 리소스를 필요로 할 때마다 낮은 우선 순위의 사용자 프로세스를 종료 할 수 있도록 우선 순위가 매우 낮은 사용자를 원합니다.
그런 것을 허용 할 수 있습니까?
답변:
다른 사용자에게 우선 순위가 낮은 사용자 로서 프로세스를 종료 할 수있는 권한을 부여하십시오.
sudo -u lowpriouser /bin/kill PID
루트 권한이 없으면 사용자는 자신의 프로세스에만 신호를 보낼 수 있습니다. 파일 sudo -u
에서 올바른 설정을 가진 사용자 를 사용 하면 sudoers
우선 순위가 낮은 사용자의 신원을 가정하여 프로세스를 종료 할 수 있습니다.
예를 들면 다음과 같습니다.
%killers ALL = (lowpriouser) /bin/kill
이렇게하면 그룹의 모든 사용자가 killers
로 실행될 수 /bin/kill
있습니다 lowpriouser
.
sudoers
시스템 설명서 도 참조하십시오 .
OpenBSD 시스템에서는 다음과 같은 doas
구성으로 원시 유틸리티를 통해 동일한 작업을 수행 할 수 있습니다.
permit :killers as lowpriouser cmd /bin/kill
그때
doas -u lowpriouser /bin/kill PID
kill
. killers
모든 사용자가 아닌 사용자 그룹 ( )을 사용하는 것이 좋습니다 .
kill -HUP
단지 kill -TERM
.
lowpriouser
. 신호를로 제한하려면 TERM
래퍼 셸 스크립트를 작성하여 /bin/kill
사람들이 대신 사용할 수 있도록 /bin/kill
합니다.
%killers ALL = (lowpriouser) /bin/kill -(9, 15) [0-9 ]*
프로세스의 우선 순위가 낮 으면 리소스를 거의 소비하지 않으므로 프로세스를 종료해서는 안됩니다.
실제로 우선 순위를 낮게하려면 우선 순위를 수동으로 변경하거나 autonice
오랜 세월 (1994 년경)에 DEC OSF / 1 용으로 작성한 데몬을 사용하여 장기 실행 작업을 찾고 실행 시간이 길어질수록 우선 순위를 점차적으로 줄입니다. .
편집 라는 패키지 거기에 and
현대적인 유닉스에 대한 이벤트가이 기능을 제공합니다.
프로세스가 낮은 우선 순위 설정 (CPU, I / O)으로 실행되면 실행 예약되지 않기 때문에 다른 프로세스에 큰 영향을 미치지 않아야합니다. 메모리 사용량과 관련하여 메인 메모리가 부족하고 프로세스가 오랜 시간 (예 : CPU 및 I / O 제한으로 인해) 실행되도록 예약되지 않은 경우 "정리"페이지가 삭제되고 "더러운"페이지가 커밋됩니다. 다른 프로세스의 성능에 더 이상 영향을 미치지 않습니다.
결론 : 올바른 우선 순위 설정과 충분한 스왑 공간을 사용하면 우선 순위가 낮은 작업을 종료하여 더 중요한 작업을위한 "룸"을 만들 필요가 없습니다. 대신 커널은 전자가 후자를 위해 잠들도록주의를 기울일 것이다.