当前位置: 首页>>技术教程>>正文


如何查找正在运行的终端程序的进程ID(PID)?

, ,

问题描述

我正在终端上运行一个程序,我无法用CtrlC转义,而且我想杀死它。我怎样才能找到它的PID?

最佳解决方法

打开另一个终端并运行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

每行输出的第一个字段是一个数字,表示与grep匹配的程序的进程ID(您可以放心地忽略最后一个代表grep本身的进程ID。

要停止违规流程,请执行:kill pid其中,pid是程序的进程ID。您可能需要根据您的判断来确定哪些匹配项需要kill编辑,或者您可以使用top。使用kill本身会发送SIGTERM,您应该先尝试一下,因为它允许程序自行清理完毕。如果SIGTERM失败,尝试SIGHUP,这是更强大的药物:kill -HUP pid。如果一切都失败,发送SIGKILL。但是,作为最后的手段,你应该这么做,因为SIGKILL会导致内核立即终止进程,而无法进行清理。这有时会导致数据损坏或其他问题。所以再次,只发送SIGKILL作为最后的手段。为此,请执行kill -KILL pidkill -9 pid

如果你正在运行一个图形界面,当然,你不必用这个疯狂的命令行东西来完成工作。只需打开”System Monitor”,导航到进程选项卡,选择要停止的进程(嗯,它可能是使用90%CPU的那个?)和right-click它。由于进程已经停止,(这就是问题所在,对吗?)从结果菜单中选择End Process或Kill Process。

Credit to koanhead

次佳解决方法

当你用pgrep,pkill,pidof等完成相同的命令时,我认为不需要这么长的命令。

  • 获取Running-Program的pid

p纤ep:

   pgrep [options] pattern

描述:pgrep查看当前正在运行的进程并将与选择标准相匹配的进程ID列出到stdout。所有的标准必须匹配。例如,

  • 查找由root拥有的名为sshd的进程。

    $ pgrep -u root sshd
    
  • 列出由root或守护进程拥有的进程。

    $ pgrep -u root,daemon
    

的pidof:

描述:

Pidof找到指定程序的进程ID(pids)。它在标准输出上打印这些ID。

语法:pidof program_name

  • 用pid杀死一个程序使用pkill例子:

    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标志:列出进程名称以及进程标识。

第三种解决方法

知道正在运行的程序的pid的最简单方法是使用:

pidof <application name>

例如,如果你启动了vim并想知道它的pid:

pidof vim

请记住,您需要提供已启动的确切程序名称。

例如,如果您正在运行vi并执行pidof vim,则不会得到正确的结果。

有关更多信息,请参阅pidof的手册页。

第四种方法

我发现通过添加”-i”并使用”aux”而不是”ax”来获得更具描述性的输出,可以使用不区分大小写的搜索:

ps aux | grep -i firefox

如果你想杀死你可能使用的所有进程:

ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9

这是一个强有力的杀戮。如果你想要杀软,那么放弃”-9″。

第五种方法

如果你只想要pid(对自动启动脚本等有用……)

pgrep -f desired_program_name

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/918.html,未经允许,请勿转载。