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)
使用命令的名称使用:
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多个进程发送信号。
有两个非常简洁的命令pgrep,pkill允许输入搜索词或命令名称的一部分,并且它将提供进程的 PID 或(如果是pkill)杀死该进程。
$ pgrep -f firefox
23699
Run Code Online (Sandbox Code Playgroud)
pkill使用和标志运行相同的命令-f将关闭所有 Firefox 窗口。
专门需要该-f标志来搜索进程的完整命令行。