Rumah > Soal Jawab > teks badan
ps -ef | grep javadeploy.jar | grep -v grep | awk '{print $2}' | xargs kill
上面这条命令的意思是先通过ps将进程ID得到,然后再kill。但是有一个问题,就是如果这个进程不存在,kill就会出错。如何在这条命令上加个判断,如果存在则运行kill,不存在则不执行kill。
另外试过killall、pkill命令并不能kill。
——————————————分割线——————————————
该问题已经解决,给出解决方法:
1、由于是根据参数的一部分kill,所以直接使用pkill javadeploy.jar
不行,但是可以使用pkill -f javadeploy.jar
来kill该进程;
2、@小_秦 提供的方法,加上xargs
后面--no-run-if-empty
,即ps -ef | grep javadeploy.jar | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill
伊谢尔伦2017-04-17 13:44:59
pkill是用于实现进程名的一部分的kill的
pgrep用于grep进程,直接返回进程号,且不包含pgrep本身
但是这两个工具都有个问题,就是不支持匹配程序参数。
你这个需求,还是老老实实用xargs吧。
要想加个判断,楼上 小_秦 的办法是可行的。