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

在本文中,我們將探討如何通過進程識別號(PID)查找進程名稱。在深入實際解決方案之前,讓我們簡要談談Linux如何創建和識別進程。

每當用戶或系統(Linux)啟動一個程序時,內核會創建一個進程。進程在內存中保存了程序執行的詳細信息,如輸入和輸出數據、變量等。

重要的是,由於Linux是一個多任務操作系統,它同時執行多個程序,這意味著每個進程都必須被明確識別。

內核使用進程IDPID)來識別每個進程,每個進程實例都必須有一個獨特的PID,以避免在其他進程被調用時出現任何執行錯誤。

/proc文件系統存儲了有關系統上當前運行的進程的信息,它包含每個進程的目錄。

使用ls命令列出其內容,但列表可能很長,因此請使用管道和less實用程序以更方便的方式查看/proc內容如下:

$ ls /proc 
OR
$ ls /proc | less 
List /proc File System
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

以下是具有systemd進程和PID 1的文件列表:

$ ls /proc/1
Show SystemD Process 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命令(如pstop和相對較新的glances命令)監控進程及其PID,如下面的示例:

$ ps aux
Show Running Processes with 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]
....

使用傳統的top命令監控Linux進程。

$ top
Monitor Linux Processes with top Command

使用glances監控Linux進程,這是一個新的實時進程監控工具。

$ glances
Glances – Real Time Linux Processes Monitoring

了解更多有關如何在Linux系統中安裝Glances。

查找進程PID號碼

要查找進程的PID,您可以使用pidof,這是一個簡單的命令來打印出進程的PID:

$ pidof firefox
$ pidof python
$ pidof cinnamon
Find Linux Process PID

回到我們的重點,假設您已經知道進程的PID,您可以使用以下命令形式打印其名稱:

$ ps -p PID -o format 

其中:

  1. -p指定PID
  2. -o格式啟用用戶定義格式

使用PID號碼查找進程名稱

在本節中,我們將看到如何使用進程的PID號碼來查找進程名稱,並使用用戶定義格式即comm=,這意味著命令名稱,與進程名稱相同。

$ ps -p 2523 -o comm=
$ ps -p 2295 -o comm=
Find Linux Process Name

有關其他用法信息和選項,請查看ps man頁面。

$ man ps

如果您想使用進程的PID號碼終止進程,我建議您閱讀使用其PID查找並終止Linux進程

這就是目前的內容,如果您知道任何其他更好的方法來查找使用PID的進程名稱,請通過下面的評論部分與我們分享。

Source:
https://www.tecmint.com/find-process-name-pid-number-linux/