我正在寻找一种根据进程名称('job_runner_')终止进程的方法。这是我目前所做的,我运行以下命令:
ps -ef |grep job_runner_
然后kill -9
在返回的每个进程上运行(可能会返回多个进程)。
我怎样才能通过单个命令完成此操作?
答案1
killall
提到的是在psmisc
软件包中(至少在基于 Debian 的安装中如此命名)。另一种选择是,pkill
在procps
软件包中。
你应该使用专门为此目的而制作的工具。如果你真的、真的、真的想通过解析ps
输出来实现这一点,你可以这样做
ps -ao pid,comm | awk '/job_runner_/{system("kill "$1)}'
答案2
全杀会为您完成此事。
姓名
killall—按名称终止进程
请注意,该-r
选项将把名称解释为正则表达式,从而满足您终止多个类似名称进程的要求。
还请注意,最好不要使用 -9 选项立即终止进程。而应使用常规终止,因为它将使进程有机会捕获该信号、执行任何清理,然后干净地退出。使用 -9 不会让进程这样做,并且只应将其用于麻烦/无响应的进程。
答案3
只需使用pkill job_runner_
。
您还可以使用 按名称检查进程pgrep job_runner_
。
答案4
ps -ef | grep job_runner_ | xargs kill -9
尝试一下这个。