私は2つのTomcatプロセスを持っています.1つはevent-ws
と呼ばれ、もう1つはapp-event-ws
と呼ばれます。私は時々、シェルスクリプトからevent-ws
を殺すために必要があります。無関係なプロセスを間違って含むことなく、特定のプロセスに一致してkillするにはどうすればよいですか?
ps -ef | grep -w event-ws | grep -v grep
上記それらの両方を見つけ、殺すだろう。そのうちの1つを正確に見つける方法を教えてください。
私は2つのTomcatプロセスを持っています.1つはevent-ws
と呼ばれ、もう1つはapp-event-ws
と呼ばれます。私は時々、シェルスクリプトからevent-ws
を殺すために必要があります。無関係なプロセスを間違って含むことなく、特定のプロセスに一致してkillするにはどうすればよいですか?
ps -ef | grep -w event-ws | grep -v grep
上記それらの両方を見つけ、殺すだろう。そのうちの1つを正確に見つける方法を教えてください。
pgrep
/pkill
は、ps
の代わり、この場合に使用するのに最適なツールです。
pgrep -x event-ws # match by executable filename 'event-ws'; print PID
pkill -x event-ws # match and kill
その実行可能ファイル名event-ws
で正確(-x
)各コマンドの一致プロセス(複数可) (実行ファイルの起動時にディレクトリパス接頭辞が使用されたかどうかに関係なく)。
ただし、あなたのpgrep
/pkill
実装が15文字に名前を制限すること - の両方に一致すると、その出力に。
pgrep
単にプリントマッチングPID(S)(プロセスID(S))、一方、pkill
キルマッチング処理(ES)。
対照的に、あなたは正規表現で-f
オプションを使用し、完全なコマンドラインの一部で一致させる必要がある、場合:あなたが-l
を追加する場合
pgrep -f '/event-ws/' # match by part of the full command line; print PID and name
pkill -f '/event-ws/' # match and kill
pgrep
コマンドでは、プロセス名だけでなく、一致するプロセスの完全なコマンドラインが表示されます。
素晴らしい!あなたの助けと患者に感謝します。 – yyzhang14922