在我的 Makefile 中,我有以下内容可以杀死所有正在运行的 nginx 进程:
killNginx:
sudo kill -9 $(ps -ef | grep [n]ginx | awk '{print $2}')
问题是当没有运行 nginx 进程时它给我一个错误。有没有办法只有在 nginx 正在运行时才能运行 kill 命令?
编辑:
实际上,我认为问题在于 2 美元没有被执行。我尝试了 $$2 但仍然无法正常工作。任何人有任何其他想法来逃避 2 美元吗?
在我的 Makefile 中,我有以下内容可以杀死所有正在运行的 nginx 进程:
killNginx:
sudo kill -9 $(ps -ef | grep [n]ginx | awk '{print $2}')
问题是当没有运行 nginx 进程时它给我一个错误。有没有办法只有在 nginx 正在运行时才能运行 kill 命令?
编辑:
实际上,我认为问题在于 2 美元没有被执行。我尝试了 $$2 但仍然无法正常工作。任何人有任何其他想法来逃避 2 美元吗?
找到了一种使它对我有用的方法:
killNginx:
ps -ef | grep [n]ginx | awk '{print $$2}' | xargs sudo kill -9
您需要转义$
配方中不引入 make 变量的每一个。所以,你需要同时逃避$$(ps ...
和 print $$2
。您似乎在暗示这不是您的问题:但是,如果没有它,这甚至不可能接近工作。
你也可以看看killall。类似的东西killall -I nginx || true
可能会做到。
试一试:
for PID in $(ps -ef | grep [n]ginx | awk '{ print $2 }'); do
sudo kill -9 $PID
done