#1 楼
打开另一个终端并运行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
每行输出的第一字段是一个数字,代表匹配的程序的进程ID通过
grep
(您可以放心地忽略最后一个代表grep
本身的代码。使用您的判断来判断哪些匹配项需要kill pid
ed,或者您可以使用kill
本身使用top
会发送SIGTERM,您应该首先尝试使用SIGTERM,因为这样可以使程序在其自身之后正确清理。 ,请尝试使用SIGHUP,这是更便宜的药:kill
。如果其他所有方法均失败,请发送SIGKILL。但是,您只能作为最后的选择,因为SIGKILL会导致内核立即终止进程,而无法进行清理。时间会导致数据损坏或其他问题。再次,仅发送S IGKILL作为最后的手段。为此,请执行kill -HUP pid
或kill -KILL pid
。只需打开“系统监视器”,导航到“进程”选项卡,选择要暂停的进程(Hm,它可能是使用90%CPU的进程吗?),然后右键单击它。由于该进程已经停止,(这是问题所在,对吗?)从结果菜单中选择“结束进程”或“终止进程”。评论
除非所有其他方法都失败了,否则人们永远不要使用SIGKILL(杀死-9)。仅列出kill -9是不好的建议。我已经编辑了答案以进行更正。
–斯科特遣散费
2012年8月26日上午10:04
如何找到自定义函数的pid。我有一个函数,其中包含带有ping命令和睡眠的循环。根据unix.stackexchange.com/a/275826/72988的说法,在没有多路复用器的Ubuntu中是不可能的。
– Timo
18年2月3日,9:27
#2 楼
当您可以使用pgrep,pkill,pidof等完成相同的命令时,我认为不需要这么长的命令...要获取运行中的pid,程序
pgrep:
pgrep [options] pattern
描述:
pgrep查看当前正在运行的进程并列出与选择匹配的进程ID标准的标准。所有条件都必须匹配。例如,
查找root拥有的名为sshd的进程。
$ pgrep -u root sshd
列出root OR守护程序拥有的进程。
$ pgrep -u root,daemon
> pidof:
描述:
Pidof查找指定程序的进程ID(PID)。它会在标准输出上打印这些ID。
语法: br />示例:
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
-f
标志:搜索process_name(请参阅man pkill)-o
标志:仅选择最旧的匹配进程。 -n
标志:仅选择最新的匹配进程。 -l
标志:列出进程名称和进程ID。评论
这是最好的答案
–BlackDivine
18年1月12日在10:17
#3 楼
知道正在运行的程序的pid的最简单方法是使用:pidof <application name>
例如,如果您启动vim并想知道其pid: br />
pidof vim
请记住,您将需要提供已启动的确切程序名称。
例如,如果您正在运行vi并执行
pidof vim
,您将不会不能获得正确的结果。有关更多信息,请参阅
pidof
的手册页。评论
默认情况下未安装。它可能在sysvinit-utils软件包中。
– flickerfly
2014年9月19日19:24在
我有MariaDB。 pidof mysqld返回一个PID。但是,如果键入pidof Mariadb,则不会返回任何内容。 MariaDB和MySQL是否使用相同的PID?
– Pathros
18年6月13日在15:18
#4 楼
我发现最好使用不区分大小写的搜索,方法是添加“ -i”并使用“ aux”而不是“ ax”来获得更具描述性的输出:br />如果您想杀死所有进程,则可以使用:
ps aux | grep -i firefox
这是一个有力的杀死方法。如果您想进行软杀,请放下“ -9”。
评论
这也杀死了ps aux | grep -i firefox ...进程,因为该命令的命令中包含文本firefox!
–埃里克
2014年7月21日在9:41
@Eric您可以使用grep -i firefo [x]仅匹配firefox
– A.D.
16年4月22日在9:36
@ john-foley绝不建议将-9与kill配合使用,请参见此处以获取解释
– A.D.
16年4月22日在9:38
#5 楼
如果只需要pid(可用于自动终止脚本等)pgrep -f desired_program_name
#6 楼
对于那些运行Ubuntu 16.04 LTS的用户,您必须在命令行上使用ps ax
而不是ps
,否则,您只会从所处的特定终端实例中获得生成的进程。(通常只是'bash'[ re in]和'ps'[您刚刚运行的内容])评论
我喜欢ps -e(显示全部)和ps -ejH(显示进程树)。
–安德鲁(Andrew)
19年6月25日在15:13
@Andrew很好,这实际上很可爱-感谢小费
–cygnus_x1
19年10月1日在16:34
#7 楼
您还可以打开另一个终端(或切换到另一个tty)并运行top
,它基本上是系统监视器的文本版本。第一列列出了每个正在运行的进程的PID,您可以通过按K,输入PID然后输入要发送的数字信号来杀死它。#8 楼
您可以执行以下操作:ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
前两个管道获取过程信息,接下来我们尝试通过使用老式剪切来获取PID列,然后将得到的PID传递给杀死。
评论
kill -9是您必须杀死进程的最大枪支。首先,您应该尝试使用更柔和的信号,然后再诉诸SIGKILL,使该过程有机会清理其资源。
–Byte Commander♦
16-09-27在21:30
没错,@ ByteCommander。我想把它做成可以完成工作的衬板。
–阿里安(Arian Soltani)
16/09/28'6:40
#9 楼
top
或
screen -list|ls
列出所有具有相应过程的pid
kill -[pid]
评论
这是Ubuntu死机时我该怎么办?作为防止该问题的细节过于技术化的参考。有一个pidof命令。