杀死空进程ID

时间:2012-04-20 06:05:11

标签: makefile

在我的Makefile中,我有以下内容来杀死所有正在运行的nginx进程:

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

问题是当没有运行nginx进程时它会给我一个错误。有没有办法只在nginx运行时才能运行kill命令?

编辑:

实际上我认为问题是2美元没有被执行。我试过了2美元,但仍然无法正常工作。任何人都有任何其他想法逃脱$ 2?

3 个答案:

答案 0 :(得分:2)

找到一种让它适合我的方法:

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

答案 1 :(得分:1)

您需要转义配方中没有引入make变量的每个$。因此,您需要同时转义$$(ps ... print $$2。你似乎暗示这不是你的问题:但是如果没有这个问题,就没有办法接近工作。

你也可以看看killall。像killall -I nginx || true这样的东西可能会这样做。

答案 2 :(得分:0)

试一试:

for PID in $(ps -ef | grep [n]ginx | awk '{ print $2 }'); do
    sudo kill -9 $PID
done