Unix에서 여러 프로세스를 빠르게 중지하는 방법은 무엇입니까?

Unix에서 여러 프로세스를 빠르게 중지하는 방법은 무엇입니까?

UNIX에서 여러 프로세스를 빠르게 중지하는 방법

ps/ top, kill.​

프로세스 수가 많으면 쉘 스크립트를 사용합니다. 하나 또는 두 개의 유닉스 명령으로 이를 수행할 수 있는 다른 방법이 있습니까?

답변1

내 선택은pkill/pgrep

답변2

내가 사용하는 온라인 bash 스크립트는 다음과 같습니다.

ps auxwww | grep -v grep | grep -i $1 | awk '{print $2}' | xargs kill -9

이름에 첫 번째 매개변수가 포함된 모든 프로세스를 종료합니다(대소문자 구분 안 함). 각 섹션의 분류는 다음과 같습니다.

  • ps auxwww매우 넓은 "명령" 필드를 사용하여 모든 프로세스를 인쇄합니다.
  • grep -v grep살인에서 제외됐나요?
  • grep -i $1첫 번째 인수를 포함하는 모든 줄과 일치합니다.
  • awk '{print $2}'모든 프로세스 ID 가져오기
  • xargs kill -9선택한 모든 프로세스 종료

답변3

Psdoom은 실제로 프로세스를 종료하는 유일한 방법입니다. http://psdoom.sourceforge.net/

답변4

저는 pgrep/pkill 명령을 사용하는 것을 선호합니다. 예는 다음과 같습니다.

[root@testrhel7 ~]# pgrep -l http
2967 httpd
2968 httpd
2969 httpd
2970 httpd
2971 httpd
2972 httpd
[root@testrhel7 ~]#
[root@testrhel7 ~]# pkill -e http
httpd killed (pid 2967)
httpd killed (pid 2968)
httpd killed (pid 2969)
httpd killed (pid 2970)
httpd killed (pid 2971)
httpd killed (pid 2972)
[root@testrhel7 ~]#

물론 for 루프를 사용할 수도 있습니다:

[root@testrhel7 ~]# ps -ef  |grep http| grep -v grep
root       2989      1  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2990   2989  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2991   2989  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2992   2989  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2993   2989  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2994   2989  0 16:06 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
[root@testrhel7 ~]#

[root@testrhel7 ~]# for i in $(ps -ef | awk '/http/ {print $2}'); do kill -9 $i; done 

이것이 도움이 되기를 바랍니다. 행복한 살인이 되길 바랍니다.

관련 정보