在我的Makefile中,我有以下内容来杀死所有正在运行的nginx进程:
killNginx:
sudo kill -9 $(ps -ef | grep [n]ginx | awk '{print $2}')
问题是当没有运行nginx进程时它会给我一个错误。有没有办法只在nginx运行时才能运行kill命令?
编辑:
实际上我认为问题是2美元没有被执行。我试过了2美元,但仍然无法正常工作。任何人都有任何其他想法逃脱$ 2?
答案 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