我需要终止myName
描述中包含以下内容的进程。目前我正在执行:
ps -ax |grep myName
I see PID
kill -9 PID
如何在不输入 PID 的情况下使用一个命令执行相同操作?
答案1
如果myName
是要终止的进程/可执行文件的名称,则可以使用:
pkill myName
pkill
默认发送SIGTERM
信号(信号 15)。如果您想要SIGKILL
或信号 9,请使用:
pkill -9 myName
如果myName
不是进程名称,或者是另一个(长)命令的参数,pkill
(或pgrep
)可能无法按预期工作。因此您需要使用选项-f
。
从man kill
:
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
NOTES
The process name used for matching is limited to the 15 characters present
in the output of /proc/pid/stat. Use the -f option to match against the
complete command line, /proc/pid/cmdline.
所以:
pkill -f myName
或者
kill -9 $(pgrep -f myName)
答案2
使用命令名称:
pkill -9 myscript
如果您在命令行中寻找字符串:
kill -9 $(ps ax | grep myName | fgrep -v grep | awk '{ print $1 }')
我必须警告你:上述命令可以SIGKILL
向多个进程发送信号。
答案3
有两个非常简洁的命令pgrep
和pkill
允许输入搜索词或部分命令名,它将提供进程的 PID 或(在的情况下pkill
)终止该进程。
$ pgrep -f firefox
23699
pkill
使用和标志运行相同的命令-f
将关闭所有 Firefox 窗口。
该-f
标志专门用于搜索进程的完整命令行。
答案4
您可以for loop
对与特定进程名称相关的所有 PID 进行简单检查,如下所示:
$ for i in $( ps ax | awk '/[m]yName/ {print $1}' ); do kill ${i}; done
这将终止所有包含单词:的进程myName
。