2017-03-21 6 views
1

私は2つのTomcatプロセスを持っています.1つはevent-wsと呼ばれ、もう1つはapp-event-wsと呼ばれます。私は時々、シェルスクリプトからevent-wsを殺すために必要があります。無関係なプロセスを間違って含むことなく、特定のプロセスに一致してkillするにはどうすればよいですか?

ps -ef | grep -w event-ws | grep -v grep 

上記それらの両方を見つけ、殺すだろう。そのうちの1つを正確に見つける方法を教えてください。

答えて

3

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コマンドでは、プロセス名だけでなく、一致するプロセスの完全なコマンドラインが表示されます。

+1

素晴らしい!あなたの助けと患者に感謝します。 – yyzhang14922

関連する問題