这是众所周知的,经常被问到如何从进程的PID获取完整的可执行文件路径。但是,我需要相反的事情:我需要找到从绝对路径到其可执行文件的进程的PID。有没有最简单的方法,或者我应该获取所有PID并手动验证可执行路径?
为什么我需要那?我需要终止该进程的垃圾实例,但不要杀死与我应终止的进程同名的其他进程。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Linux系统中,你可以使用pgrep
命令结合正则表达式来直接根据可执行文件的完整路径找到对应的进程PID。这样可以避免遍历所有进程并手动验证的繁琐过程。
例如,如果你知道要终止的进程的完整路径是/usr/local/bin/my_process
,你可以使用以下命令:
pgrep -f /usr/local/bin/my_process
这里的-f
选项告诉pgrep
命令去匹配进程的完整命令行,包括路径。这将返回所有与该路径匹配的进程PID。
如果你想直接杀死这些进程,可以在上面的命令后面加上| xargs kill
,这样就可以批量终止这些进程了:
pgrep -f /usr/local/bin/my_process | xargs kill
或者,如果你有sudo权限,并且需要的话,可以使用sudo
和-9
信号强制终止:
pgrep -f /usr/local/bin/my_process | xargs sudo kill -9
请谨慎使用这些命令,确保你正确地指定了进程路径,以免误杀其他重要进程。