공유 서버에서는 다른 사용자(루트 액세스 권한도 없음)가 리소스를 필요로 할 때마다 우선 순위가 낮은 사용자의 프로세스를 종료할 수 있도록 우선 순위가 매우 낮은 사용자를 두고 싶습니다.
그런 일이 허용될 수 있나요?
답변1
다른 사용자에게 프로세스 종료 권한 부여~처럼우선순위가 낮은 사용자는 통과
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
답변2
이러한 프로세스를 종료해서는 안 됩니다. 우선 순위가 낮을 경우 리소스를 거의 소모하지 않습니다.
실제로 우선순위를 낮추려면 우선순위를 수동으로 변경하거나 autonice
제가 몇 년 전에 DEC OSF/1(c.1994)에 대해 작성한 것과 같은 데몬을 사용하십시오. 런닝타임이 늘어나니까.
편집하다라는 패키지가 있습니다.and
이 기능은 최신 Unices에 제공됩니다.
답변3
나는 당신이 잘못된 각도에서 접근하고 있다고 생각합니다. 하나의 프로세스가 낮은 우선 순위 설정(CPU, I/O)으로 실행되고 있으면 실행 예약이 없기 때문에 다른 프로세스에 큰 영향을 미치지 않습니다. 메모리 사용량의 경우, 주 메모리가 부족하고 프로세스가 오랫동안 실행되도록 예약되지 않은 경우(예: CPU 및 I/O 제약으로 인해) "클린" 페이지가 삭제되고 "더티" 페이지가 커밋되거나 교체되어 더 이상 다른 프로세스의 성능에 영향을 미치지 않습니다.
결론: 올바른 우선순위 설정과 충분한 스왑 공간을 사용하면 더 중요한 작업을 위한 "공간"을 만들기 위해 우선순위가 낮은 작업을 종료할 필요가 없습니다. 대신 커널은 후자를 위해 전자를 절전 모드로 전환합니다. .