これは私の移行に関連しています。質問。
Linuxシステム(sys V IPCなど)でIPCチャネルに関する統計を見つけることができる場合、どのプロセスが特定のIPCチャネルを使用しているかをどうやって知ることができます(チャネルを介した送信、受信機は通常コマンド出力に記載されています)。
たとえば、ipcs
マシンの共有メモリIDのリストを教えてください。この共有メモリを使用しているプロセスをどのように見つけることができますか?
私が興味のある他のIPC(統計を見つけるために使用するコマンドは次のとおりです):
- 管路:
lsof | grep pipe
- UNIXドメインソケット:
netstat -n
ベストアンサー1
を使用することもできipcs
ますが、追加オプションを追加できます。
wouter@gangtai:~$ ipcs
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0052e2c1 32768 postgres 600 56 20
0x00000000 17924097 wouter 600 33554432 2 dest
0x00000000 49446914 wouter 600 524288 2 dest
[...]
wouter@gangtai:~$ ipcs -i 17924097 -m -p
Shared memory Segment shmid=17924097
uid=1000 gid=1000 cuid=1000 cgid=1000
mode=01600 access_perms=0600
bytes=33554432 lpid=3808 cpid=1457 nattch=2
att_time=Fri Jul 3 10:43:28 2015
det_time=Fri Jul 3 10:43:28 2015
change_time=Fri Jul 3 10:03:00 2015
lpid
「最後の訪問者」PIDはcpid
「作成者」PIDです。
この-i
パラメータには、確認するIPCオブジェクト(共有メモリセグメント、メッセージキュー、またはセマフォ)のIDが必要です。これ-m
は、メモリセグメントを調べて-p
プロセスIDを表示することを意味するためです。
全体の内容を確認してくださいman ipcs
。