如何在 Linux 中使用 PID 号查找进程名称

在这篇文章中,我们将看看通过其进程标识号 (PID)。在深入讨论实际的解决方案之前,让我们先简单介绍一下 Linux 是如何创建和识别进程的。

每次用户或系统(Linux)启动一个程序时,内核都会创建一个进程。进程在内存中保存程序的执行细节,例如输入和输出数据、变量等。

重要的是,由于Linux是一个多任务操作系统,它同时执行多个程序,这意味着每个进程必须被明确标识。

内核使用进程来标识每个进程IDPID),进程的每个实例都必须有一个唯一的PID调用进程时分配的其他进程的值,以避免任何执行错误。

这存储有关的信息,它包含每个进程的目录。

使用然而,要列出其内容,列表可能很长,因此使用管道和更方便的方式如下:

$ ls /proc 
OR
$ ls /proc | less 

列出 /proc 文件系统

1     168   2230  25    329   584   7386  83         driver        schedstat
10    169   2234  2503  33    603   74    830        execdomains   scsi
1070  17    2247  2507  34    610   7411  833        fb            self
1081  1702  2256  2523  349   611   7423  836        filesystems   slabinfo
109   1714  2258  253   35    612   745   839        fs            softirqs
11    173   2266  2551  36    613   746   84         interrupts    stat
110   1760  2273  26    362   62    75    844        iomem         swaps
1188  1763  2278  2688  3642  63    7533  85         ioports       sys
12    1769  2282  2694  3643  64    7589  86         irq           sysrq-trigger
1204  177   2283  2695  37    6436  76    860        kallsyms      sysvipc
1209  1773  2285  2698  38    65    7619  87         kcore         thread-self
1254  18    2287  2699  39    66    7689  9          keys          timer_list
13    1847  2295  27    3974  67    7690  94         key-users     timer_stats
15    1914  23    2702  3976  68    77    977        kmsg          tty
152   1917  2308  28    4273  6897  7725  981        kpagecgroup   uptime
153   1918  2309  280   4374  69    7729  987        kpagecount    version
154   1938  2310  2815  4392  6969  7733  997        kpageflags    version_signature
155   1956  2311  2817  44    6980  78    acpi       loadavg       vmallocinfo
156   1981  2315  282   45    7     79    asound     locks         vmstat
1565  1986  2316  283   4543  70    790   buddyinfo  mdstat        zoneinfo
1567  1988  2317  29    46    71    8     bus        meminfo
157   2     2324  2935  461   7102  80    cgroups    misc
1579  20    2347  2944  4686  72    808   cmdline    modules
158   2010  2354  3     47    73    81    consoles   mounts
1584  2043  2436  30    4700  7304  810   cpuinfo    mtrr
159   2044  2437  3016  5     7311  815   crypto     net
1590  21    2442  31    515   7322  82    devices    pagetypeinfo
16    2167  2443  318   5273  7347  820   diskstats  partitions
160   22    2492  32    5274  7367  823   dma        sched_debug

从上面的截图来看,编号目录存储了正在执行的进程的信息文件,其中每个数字对应一个PID

以下是文件列表系统处理与PID 1:

$ ls /proc/1

显示 SystemD 进程 PID

ls: cannot read symbolic link '/proc/1/cwd': Permission denied
ls: cannot read symbolic link '/proc/1/root': Permission denied
ls: cannot read symbolic link '/proc/1/exe': Permission denied
attr        coredump_filter  gid_map    mountinfo   oom_score      schedstat  status
autogroup   cpuset           io         mounts      oom_score_adj  sessionid  syscall
auxv        cwd              limits     mountstats  pagemap        setgroups  task
cgroup      environ          loginuid   net         personality    smaps      timers
clear_refs  exe              map_files  ns          projid_map     stack      uid_map
cmdline     fd               maps       numa_maps   root           stat       wchan
comm        fdinfo           mem        oom_adj     sched          statm

你可以使用传统的 Linux 命令,例如,并且相对较新命令以及更多命令,如下例所示:

$ ps aux

显示带有 PID 的正在运行的进程

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 185728  6268 ?        Ss   10:15   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    10:15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    10:15   0:09 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    10:15   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/0]
root        10  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/1]
root        12  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/1]
root        13  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/1]
root        15  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/1:0H]
root        16  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/2]
root        17  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/2]
root        18  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/2]
root        20  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/2:0H]
root        21  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/3]
root        22  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/3]
root        23  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/3]
root        25  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/3:0H]
root        26  0.0  0.0      0     0 ?        S    10:15   0:00 [kdevtmpfs]
root        27  0.0  0.0      0     0 ?        S<   10:15   0:00 [netns]
root        28  0.0  0.0      0     0 ?        S<   10:15   0:00 [perf]
....

使用传统方式监控 Linux 进程。

$ top
使用 top 命令监控 Linux 进程

使用以下命令监控 Linux 进程扫视,一个新的Linux实时进程监控工具。

$ glances
概览 – 实时 Linux 进程监控

了解更多关于。

找出进程 PID 号

为了找出PID一个进程,你可以使用pidof,一个简单的命令来打印PID一个进程的:

$ pidof firefox
$ pidof python
$ pidof cinnamon
查找 Linux 进程 PID

回到我们的焦点,假设您已经知道PID进程的名称,您可以使用下面的命令形式打印其名称:

$ ps -p PID -o format 

在哪里:

  1. -p指定PID
  2. -oformat 启用用户定义的格式

使用 PID 号找出进程名称

在本节中,我们将了解如何借助用户定义的格式(即,使用 PID 号查找进程名称)comm=这意味着命令名称,与进程名称相同。

$ ps -p 2523 -o comm=
$ ps -p 2295 -o comm=
查找 Linux 进程名称

有关其他使用信息和选项,请浏览附言人页。

$ man ps

如果你想使用 PID 号杀死一个进程,我建议你阅读。

目前就这样,如果您知道使用其他更好的方法来查找进程名称PID,请通过下面的评论部分与我们分享。

嘿 TechMint 读者,

令人兴奋的消息!每个月,我们的顶级博客评论者都有机会赢得丰厚奖励,例如免费的 Linux 电子书,例如红细胞认证工程师,红十字会协会,LFCS,学习Linux, 和awk, 每个值20 美元

学习!

Aaron Kili 是一名 Linux 和 FOSS 爱好者、即将成为一名 Linux 系统管理员、Web 开发人员,目前是 TecMint 的内容创建者,他热爱计算机工作并坚信分享知识。


每个教程位于泰克明特由经验丰富的 Linux 系统管理员团队创建使其符合我们的高品质标准。