ウェブサイト検索

Linux で PID 番号を使用してプロセス名を検索する方法


この記事では、プロセス識別番号 (PID) によってプロセス名を検索する方法を説明します。実際のソリューションに入る前に、Linux によってプロセスがどのように作成され、識別されるかについて簡単に説明しましょう。

ユーザーまたはシステム (Linux) がプログラムを起動するたびに、カーネルはプロセスを作成します。プロセスは、入出力データ、変数など、プログラムの実行の詳細をメモリに保持します。

重要なのは、Linux はマルチタスク オペレーティング システムであるため、複数のプログラムを同時に実行するため、各プロセスを具体的に識別する必要があることです。

カーネルは、プロセスID (PID) を使用して各プロセスを識別します。プロセスのすべてのインスタンスには、割り当てられた他のプロセスからの一意のPIDが必要です。実行エラーを回避するために、プロセスが呼び出されるときに実行されます。

/proc ファイル システムには、システム上で現在実行中のプロセスに関する情報が保存され、各プロセスのディレクトリが含まれます。

ls コマンドを使用して内容をリストしますが、リストは長くなる可能性があるため、パイプラインとlessユーティリティを使用して、以下のようにより便利な方法で/procの内容を表示します。

ls /proc 
OR
ls /proc | less 
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 1systemd プロセスのファイルのリストです。

ls /proc/1
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

ps、top などの従来の Linux コマンドに加え、以下の例にあるように比較的新しい glances コマンドなどを使用して、プロセスとその PID を監視できます。

ps aux
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

Linux 用の新しいリアルタイム プロセス監視ツールである glances を使用して Linux プロセスを監視します。

glances

Linux システムに Glances をインストールする方法について詳しくは、こちらをご覧ください。

プロセスの PID 番号を調べる

プロセスのPIDを確認するには、プロセスのPIDを出力する簡単なコマンドである pidof を使用できます。

pidof firefox
pidof python
pidof cinnamon

焦点に戻りますが、プロセスのPIDがすでにわかっていると仮定すると、以下のコマンド フォームを使用してその名前を出力できます。

ps -p PID -o format 

どこ :

  1. -p は PID を指定します
  2. -o 形式はユーザー定義形式を有効にします

PID番号を使用してプロセス名を調べる

このセクションでは、ユーザー定義形式、つまりプロセス名と同じコマンド名を意味する comm= を使用して、PID 番号を使用してプロセス名を見つける方法を説明します。

ps -p 2523 -o comm=
ps -p 2295 -o comm=

詳しい使用方法とオプションについては、ps man ページを参照してください。

man ps

PID 番号を使用してプロセスを強制終了したい場合は、「PID を使用して Linux プロセスを検索して強制終了する」を読むことをお勧めします。

現時点ではこれで終わりです。PID を使用してプロセス名を確認する他のより良い方法をご存知の場合は、以下のコメント セクションを介して共有してください。