如何终止名称中包含短语的进程?

vic*_*ico 20 command-line bash process

我需要杀死一个包含myName在其描述中的进程。目前我正在做:

ps -ax |grep myName
I see PID
kill -9 PID
Run Code Online (Sandbox Code Playgroud)

如何在不输入 PID 的情况下使用一个命令执行相同操作?

Ron*_*Ron 36

如果myName是要杀死的进程/可执行文件的名称,则可以使用:

pkill myName
Run Code Online (Sandbox Code Playgroud)

pkill默认发送SIGTERM信号(信号 15)。如果您想要SIGKILL或 信号 9,请使用:

pkilll -9 myName
Run Code Online (Sandbox Code Playgroud)

如果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.
Run Code Online (Sandbox Code Playgroud)

所以:

pkill -f myName
Run Code Online (Sandbox Code Playgroud)

或者

kill -9 $(pgrep -f myName)
Run Code Online (Sandbox Code Playgroud)


Jay*_*got 9

使用命令的名称使用:

pkill -9 myscript
Run Code Online (Sandbox Code Playgroud)

如果您要在命令行中查找字符串:

kill -9 $(ps ax | grep myName | fgrep -v grep | awk '{ print $1 }')
Run Code Online (Sandbox Code Playgroud)

我必须警告你:上面的命令可以向SIGKILL多个进程发送信号。


Ser*_*nyy 5

有两个非常简洁的命令pgreppkill允许输入搜索词或命令名称的一部分,并且它将提供进程的 PID 或(如果是pkill)杀死该进程。

$ pgrep -f firefox                                                             
23699
Run Code Online (Sandbox Code Playgroud)

pkill使用和标志运行相同的命令-f将关闭所有 Firefox 窗口。

专门需要该-f标志来搜索进程的完整命令行。