Linux

在 bash 腳本中殺死 PID

  • March 25, 2020

我在我的 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

如果您嘗試終止 AmbariAgent 程序,則可以使用更短且更有效的命令根據名稱終止它:

pkill -f AmbariAgent

或者無論名稱實際上是什麼:

pkill -f <name>

添加了-f開關,使其與整行匹配,而不僅僅是程序名稱。

您可以使用以下一行 awk 命令來終止該程序

測試和工作正常

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

引用自:https://unix.stackexchange.com/questions/574875