(UNIXマシン上の)プロセスのPID番号を知っている場合、その関連プロセスの名前を知るにはどうすればよいですか。
私は何をしなければなりませんか?
すべてのPOSIX準拠のシステムで、そしてLinuxの場合、ps
を使うことができます。
ps -p 1337 -o comm=
ここでは、プロセスは-p
を持つそのPIDによって選択されます。 -o
オプションは出力フォーマットを指定します。comm
はコマンド名を意味します。
次も参照してください。 ps
- オープングループ基本仕様第6号
Process-idまたはpidによって使用されるプロセス名またはコマンドは、次の場所にあります。
/proc/pid/cmdline
することによって
cat /proc/pid/cmdline
ここでpidは名前を見つけたいpidです
例:
# ps aux
................
................
user 2480 0.0 1.2 119100 12728 pts/0 Sl 22:42 0:01 gnome-terminal
................
................
Pid 2480で使用されているプロセス名を見つけるには、次のようにします。
# cat /proc/2480/cmdline
gnome-terminal
# ls -la /proc/ID_GOES_HERE/exe
例:
# ls -la /proc/1374/exe
lrwxrwxrwx 1 chmm chmm 0 Mai 5 20:46 /proc/1374/exe -> /usr/bin/telegram-desktop
あなたはpmapを使うことができます。私はPID 6649を探しています。そして、余分なプロセスの詳細を切り捨てます。
$ pmap 6649 | head -1
6649: /usr/lib64/firefox/firefox
また、awkをpsと組み合わせて使用することもできます。
ps aux | awk '$2 == PID number for a process { print $0 }'
例:
root@cprogrammer:~# ps aux | awk '$2 == 1 { print $0 }'
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
HEAD LINEを印刷するには
ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
(or)
ps --headers aux |head -n 1; ps aux | awk '$2 == 1 { print $0 }'
root@cprogrammer:~# ps --headers aux |head -n 1 && ps aux | awk '$2 == 1 { print $0 }'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 24476 2436 ? Ss 15:38 0:01 /sbin/init
slack Answer と似ていますが、コマンド呼び出しではなくファイル操作に依存します。
MYPID=1
cat "/proc/$MYPID/comm"
驚いたことに、psの-f(フルコマンド)オプションについて言及している人はいません。 -e(すべて)と組み合わせて使用し、結果をgrepにパイプ処理して検索範囲を狭めることができます。
ps -ef | grep <PID>
これは、システム上で多くのリソースを消費している、誰かが実行しているフルコマンドを調べるのにも非常に役立ちます。これにより、コマンドに渡されたオプションと引数が表示されます。
最も簡単な方法は、次のコマンドを使用することです。
ps -awxs | grep pid