Jje*_*jed 147 command-line process
我正在终端中运行一个我无法逃脱的程序Ctrl-C而且我想杀死它。我怎样才能找到它的PID?
Jje*_*jed 160
打开另一个终端并运行ps ax | grep foo
其中 foo 是无响应程序的名称。这应该返回一行如下所示的输出:
$ ps ax | grep firefox
2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2 S+ 0:00 grep --color=auto firefox
Run Code Online (Sandbox Code Playgroud)
每行输出的第一个字段是一个数字,表示匹配的程序的进程 ID grep
(您可以放心地忽略最后一个,它代表grep
自身。
要停止违规进程,请执行以下操作:
kill pid
其中 pid 是程序的进程 ID。您可能必须使用自己的判断来判断哪些匹配需要被kill
编辑,或者您可以使用top
。kill
单独使用会发送 SIGTERM,您应该首先尝试它,因为它允许程序在自己之后正确清理。如果 SIGTERM 失败,请尝试 SIGHUP,这是一种更强大的药物:kill -HUP pid
。如果所有其他方法都失败,请发送 SIGKILL。但是,您应该只在万不得已时才这样做,因为 SIGKILL 会导致内核立即终止进程,而无法进行清理。这有时会导致数据损坏或其他问题。因此,再次将 SIGKILL 作为最后的手段。为此,请执行kill -KILL pid
或kill -9 pid
。
当然,如果您正在运行图形界面,则不必使用这些疯狂的命令行工具来完成工作。只需打开“系统监视器”,导航到“进程”选项卡,选择要暂停的进程(嗯,它是使用 90% CPU 的进程吗?)并右键单击它。由于进程已经停止,(这就是问题所在,对吗?)从结果菜单中选择 End Process 或 Kill Process。
感谢koanhead
Pra*_*ngh 63
当您可以使用 pgrep、pkill、pidof 等完成相同的命令时,我认为不需要这么长的命令......
pgrep:
pgrep [options] pattern
Run Code Online (Sandbox Code Playgroud)
描述: pgrep 查看当前正在运行的进程并列出与标准输出匹配的选择标准的进程 ID。所有条件都必须匹配。例如,
查找 root 拥有的名为 sshd 的进程。
$ pgrep -u root sshd
Run Code Online (Sandbox Code Playgroud)列出 root OR 守护进程拥有的进程。
$ pgrep -u root,daemon
Run Code Online (Sandbox Code Playgroud)pidof:
描述:
Pidof 查找指定程序的进程 ID (pid)。它在标准输出上打印这些 id。
语法: pidof program_name
要通过 pid 杀死程序,请使用 pkill 示例:
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
Run Code Online (Sandbox Code Playgroud)
-f
flag:搜索 process_name(请参阅 man pkill)
-o
flag:仅选择最旧的匹配进程。
-n
flag:只选择最新的匹配进程。
-l
flag:列出进程名和进程ID。
job*_*bin 28
了解正在运行的程序的 pid 的最简单方法是使用:
pidof <application name>
Run Code Online (Sandbox Code Playgroud)
例如,如果您启动 vim 并想知道它的 pid:
pidof vim
Run Code Online (Sandbox Code Playgroud)
请记住,您需要提供已启动的确切程序名称。
例如,如果您正在运行 vi 并执行,pidof vim
您将不会得到正确的结果。
pidof
有关更多信息,请参阅的手册页。
Joh*_*ley 26
我发现通过添加“-i”并使用“aux”而不是“ax”来使用不区分大小写的搜索来获得更具描述性的输出是很好的:
ps aux | grep -i firefox
Run Code Online (Sandbox Code Playgroud)
如果您想终止所有可能使用的进程:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
Run Code Online (Sandbox Code Playgroud)
那是强行杀戮。如果您想要软杀,请删除“-9”。
小智 7
如果您只需要 pid(对自动终止脚本等有用...)
pgrep -f desired_program_name
Run Code Online (Sandbox Code Playgroud)