Bash 스크립트에서 PID 종료

Bash 스크립트에서 PID 종료

bash 스크립트에서 다음 구문을 사용하여 스크립트의 PID를 종료합니다 - AmbariAgent.py

kill $(  ps -ef | grep AmbariAgent.py | grep -v grep | awk '{print $2 }' )

~에서ps -ef

ps -ef | grep AmbariAgent.py | grep -v grep
root     63769     1  0 12:39 pts/0    00:00:00 /usr/bin/python /usr/lib/python2.6/site-packages/ambari_agent/AmbariAgent.py start

CLI를 대체하는 더 우아한 방법이 있는지 묻고 있습니다.

kill $(  ps -ef | grep AmbariAgent.py | grep -v grep | awk '{print $2 }' )

?

우리는 노력한다

pkill AmbariAgent

하지만 PID는 여전히 존재합니다.

# ps -ef | grep  AmbariAgent
root      3645     1  0 12:43 pts/0    00:00:00 /usr/bin/python /usr/lib/python2.6/site-packages/ambari_agent/AmbariAgent.py start
root     31018 61002  0 13:02 pts/0    00:00:00 grep --color=auto AmbariAgent

답변1

AmbariAgent 프로세스를 종료하려는 경우 더 짧고 효율적인 명령을 사용하여 이름으로 종료할 수 있습니다.

pkill -f AmbariAgent

또는 실제 이름이 무엇이든 간에:

pkill -f <name>

-f프로세스 이름뿐만 아니라 전체 줄과 일치하도록 스위치를 추가했습니다 .

답변2

다음 awk 명령 줄을 사용하여 프로세스를 종료할 수 있습니다.

테스트를 거쳐 잘 작동함

ps -eaf | awk '/AmbariAgent.py/ && $0 !~ /awk/{print "kill -9" " " $2}'|sh

관련 정보