1

私のMakefileには、実行中のすべてのnginxプロセスを強制終了するための次のものがあります。

killNginx:
  sudo kill -9 $(ps -ef | grep [n]ginx | awk '{print $2}')

問題は、nginxプロセスが実行されていないときにエラーが発生することです。nginxが実行されている場合にのみkillコマンドを実行できる方法はありますか?

編集:

実際、問題は2ドルが実行されないことだと思います。$$ 2を試しましたが、まだ機能しません。$ 2を逃れるための他のアイデアはありますか?

4

3 に答える 3

2

それが私のために働くようにする方法を見つけました:

killNginx:
  ps -ef | grep [n]ginx | awk '{print $$2}' | xargs sudo kill -9
于 2012-04-20T17:48:05.510 に答える
1

$make変数を導入しないレシピのすべてをエスケープする必要があります。$$(ps ... したがって、との両方を エスケープする必要がありますprint $$2。あなたはこれがあなたの問題ではないことを暗示しているようです:しかし、これがなければこれがうまくいくようになる方法はありません。

また、killallを調べることもできます。のような何かがそれをkillall -I nginx || trueするかもしれません。

于 2012-04-20T12:02:04.540 に答える
0

これを試してみてください:

for PID in $(ps -ef | grep [n]ginx | awk '{ print $2 }'); do
    sudo kill -9 $PID
done
于 2012-04-20T06:10:12.863 に答える