![특정 UID를 가진 모든 프로세스의 실행을 중지하는 쉘 스크립트 예는 무엇입니까? [복사]](https://linux55.com/image/134182/%ED%8A%B9%EC%A0%95%20UID%EB%A5%BC%20%EA%B0%80%EC%A7%84%20%EB%AA%A8%EB%93%A0%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%8B%A4%ED%96%89%EC%9D%84%20%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%98%88%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
이 특정 작업에 대한 예를 인터넷에서 찾을 수 없는 것 같습니다.
답변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
.