특정 UID를 가진 모든 프로세스의 실행을 중지하는 쉘 스크립트 예는 무엇입니까? [복사]

특정 UID를 가진 모든 프로세스의 실행을 중지하는 쉘 스크립트 예는 무엇입니까? [복사]

이 특정 작업에 대한 예를 인터넷에서 찾을 수 없는 것 같습니다.

답변1

다음과 같은 방법으로 이 작업을 수행할 수 있습니다.

for i in $(pgrep -U $UID_OF_ANOTHER_USER); do kill -9 $i; done

또는

pkill -U $UID_OF_ANOTHER_USER

이러한 프로세스를 종료하는 것 외에도 프로세스를 종료할 때 모든 프로세스를 나열하는 등 첫 번째 프로세스로 더 많은 작업을 수행할 수 있습니다.

답변2

이것은 루트인 경우 작동하는 간단한 솔루션입니다.

su $uid -c kill SIGSTOP -1

지침: 해당 사용자가 되어 가능한 모든 것을 죽여보세요.


이 솔루션에서 사용되는 것처럼 모든 솔루션에는 CAP_KILL(모든 프로세스를 종료할 수 있는 권한) 또는 기존 루트(루트에 이 권한이 있음) 및 권한(자체 uid를 변경할 수 있는 권한)이 필요합니다.

프로세스를 일시 중지하는 sigstop을 보냈습니다(☺의 요청에 따라). 원하는 신호를 선택하세요. 최후의 수단으로 sigkill을 사용하십시오.

답변3

killall -u $user -STOP

이는 다른 사용자로 실행 중이거나 영향을 받은 사용자에게 속한 상위 프로세스가 없는 경우(다른 신호와 마찬가지로) 안전합니다.

ctrl-alt-delor의 솔루션이 아마도 더 좋을 것입니다(더 안전합니다). 그러나 이는 실제 종료 코드를 제공한다는 장점이 있습니다. 다른 사람은 둘 다 하지 못하고 자살할 수도 su있습니다 kill.

관련 정보