Linux如何根据进程名称的一部分kill掉进程
伊谢尔伦
伊谢尔伦 2017-04-17 13:42:59
[Linux讨论组]
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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
天蓬老师

killall -9 {name}

怪我咯

你用一个好一点的shell,自动提示的,比如zsh就可以了,输入一两个字母,按一下tab键自动补全的

PHP中文网

把最后一个管道换成&&试一下呢

伊谢尔伦

pkill是用于实现进程名的一部分的kill的
pgrep用于grep进程,直接返回进程号,且不包含pgrep本身

但是这两个工具都有个问题,就是不支持匹配程序参数。

你这个需求,还是老老实实用xargs吧。

要想加个判断,楼上 小_秦 的办法是可行的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号