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

関連情報