ps 출력을 기반으로 여러 작업을 종료하는 방법은 무엇입니까?

ps 출력을 기반으로 여러 작업을 종료하는 방법은 무엇입니까?

출력은 다음과 같습니다 ps.

$ ps aux | grep blob
ubuntu    4286  0.0  0.1  34748  9592 ?        S    Jan14   0:00 /usr/bin/python /usr/local/bin/pynt start_blob_reader
ubuntu    4287  0.0  0.1  34748  9596 ?        S    Jan14   0:00 /usr/bin/python /usr/local/bin/pynt start_blob_reader
ubuntu    4288  0.0  0.0   4444   656 ?        S    Jan14   0:00 /bin/sh -c python -m blob_manager blob
ubuntu    4289  1.2  0.2  65512 20668 ?        S    Jan14 1974:18 python -m blob_manager blob
ubuntu    4290  0.0  0.0   4444   656 ?        S    Jan14   0:00 /bin/sh -c python -m blob_manager blob
ubuntu    4291  1.2  0.2  65404 20624 ?        S    Jan14 1978:24 python -m blob_manager blob
ubuntu   19849  0.0  0.0  10464   896 pts/0    S+   05:43   0:00 grep blob

프로세스 자체 19849가 아닌 쉘 스크립트를 통해 이러한 작업을 종료하는 가장 쉬운 방법은 무엇입니까 ?grep

bash중 하나라도 zsh괜찮습니다.

답변1

사용 pkill:

pkill blob

그러면 이 패턴과 일치하는 모든 프로세스가 종료됩니다 blob.

또 다른 방법은 이지만 패턴이 정규식으로 해석되도록 killall호출해야 합니다 .-r

killall -r blob

답변2

모든 PID를 가져와서 종료해야 합니다.

kill $(ps -ef|grep -v grep |grep java |awk '{print $2}'|tr '\n' ' '); echo

아니면 좀 더 장황하게 만드세요:

netikras@netikras-PC ~ $ #ps -ef |grep -v grep |grep java |while read line; do echo "$line" |awk '{$1=$3=$4=$5=$6=$7=""; print "Killing: "$0"\n"}'; kill $(echo $line|awk '{print $2}') && echo KILLED || echo FAILED ; done
netikras@netikras-PC ~ $ 

관련 정보