找出进程ID的终端命令是什么


12

我想使用命令行退出一个进程,但是我想不起该命令来查找进程的ID。有人知道吗?

Answers:


13

找出进程ID(给定名称)的命令是pidof。但是,由于您的意图是终止进程,因此有比首先使用pidofpid 更好/更简便的方法:

假设您要终止的进程由其名称唯一标识(或者您要终止具有该名称的所有进程),则无需知道其pid。你可以简单地做killall processname

如果有多个具有相同名称的进程,但是您只想杀死其中一个进程,则使用pidof不会有太大帮助,因为它会给您pids,但不会给您任何信息来确定哪个进程。 pids属于您实际上想要杀死的进程。

在这种情况下,您可以执行以下操作:ps aux | grep processname显示所有具有给定名称的进程以及它们在其上运行的控制台(如果适用)以及调用它们的参数,这有望使您能够识别正在寻找的进程。

如果该进程打开了任何X窗口,则还可以使用xkillkill(调用xkill,然后单击该窗口)。


7

您应该看看pgreppkill,这是大多数Linux和UNIX系统上都可以找到的两个非常方便且功能强大的实用程序。

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

您可以ps -A在终端中运行以显示当前正在运行的所有进程(及其进程ID)。


grep搜索特定过程名称的管道:ps -A | grep 'my name'
Gabriel Staples



1

我最喜欢的是pstree -p | grep $(program_name)。实际上,这可以抓住该过程,将其突出显示并在括号中显示pid。

我的下一个最爱(尤其是在编程和需要过程中的所有PID时)pgrep -law ""。从字面上看,您会在运行的每个pid之后跟随应用程序(具有绝对路径)。

可以将其减少pgrep -lw ""为pid,后跟程序名称,甚至仅对pgrep -l所有pid

当然,您可以搜索特定程序(或程序的一部分)的名称。(即pgrep -lw firef可能会显示类似“ 4567 firefox”的内容)。


会不会pstree -psH $(pgrep prgram_name)是第一种情况比较好?
muru

是的,也可以。您可以为此命名。我只是用$()代表程序的名称。由于美元符号,我认为键入$(pgrep name)有点烦人,但我认为使用别名可能会有所帮助。
dylnmc 2014年

0

来自@Ben的重复问题的答案解决了我的问题:

考虑top在终端中使用该命令。

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

通过男人上衣

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.