linuxプロセスを表示するコマンド3(lsof)

8324 ワード

lsof(list open files)は、現在のシステムが開いているファイルをリストするツールです.linux環境では、任意のものがファイルとして存在し、ファイルを介して通常のデータだけでなく、ネットワーク接続やハードウェアにもアクセスできます.したがって、伝送制御プロトコル(TCP)やユーザデータグラムプロトコル(UDP)ソケットなど、システムはバックグラウンドでアプリケーションにファイル記述子を割り当て、このファイルの本質にかかわらず、アプリケーションとベースオペレーティングシステムとの相互作用に汎用インタフェースを提供する.アプリケーションがファイルを開くディスクリプタリストは、このアプリケーション自体に関する多くの情報を提供するため、lsofツールを使用してこのリストを表示することは、システムのモニタリングおよびエラーの排除に役立ちます.
1.コマンド形式:
lsof[パラメータ][ファイル]
2.コマンド機能:
あなたのプロセスが開いているファイル、ファイルを開いているプロセス、プロセスが開いているポート(TCP、UDP)を表示します.削除したファイルを復元/復元します.lsofはコアメモリや各種ファイルにアクセスする必要があるため、rootユーザーが実行する必要があるため、非常に便利なシステム監視ツールです.
lsofが開いているファイルは、次のとおりです.
1.一般ファイル
2.目次
3.ネットワークファイルシステムのファイル
4.文字またはデバイスファイル
5.(関数)共有ライブラリ
6.パイプ、名前付きパイプ
7.シンボルリンク
8.ネットワークファイル(例えば、NFS file、ネットワークソケット、unixドメイン名ソケット)
9.他のタイプのファイルなどもあります.
3.コマンドパラメータ:
-aファイルを開くプロセスのリスト
-c<プロセス名>指定したプロセスで開いているファイルを一覧表示
-g GID番号プロセスの詳細をリストする
-d<ファイル番号>ファイル番号を使用するプロセスのリスト
+d<ディレクトリ>ディレクトリの下で開いているファイルをリストします
+D<ディレクトリ>ディレクトリの下で開いているファイルを再帰的にリスト
-n<ディレクトリ>NFSを使用したファイルのリスト
-i<条件>条件を満たすプロセスをリストします.(4、6、プロトコル、:ポート、@ip)
-p<プロセス番号>指定したプロセス番号で開いているファイルをリストします.
-u UID番号プロセスの詳細をリストする
-hヘルプ情報の表示
-vバージョン情報の表示
4.使用例:
インスタンス1:パラメータなし
$ lsof 
COMMAND     PID USER   FD      TYPE             DEVICE     SIZE       NODE NAME
init          1 root  cwd       DIR                8,2     4096          2 /
init          1 root  rtd       DIR                8,2     4096          2 /
init          1 root  txt       REG                8,2    43496    6121706 /sbin/init
init          1 root  mem       REG                8,2   143600    7823908 /lib64/ld-2.5.so
init          1 root  mem       REG                8,2  1722304    7823915 /lib64/libc-2.5.so
init          1 root  mem       REG                8,2    23360    7823919 /lib64/libdl-2.5.so
init          1 root  mem       REG                8,2    95464    7824116 /lib64/libselinux.so.1
init          1 root  mem       REG                8,2   247496    7823947 /lib64/libsepol.so.1
init          1 root   10u     FIFO               0,17                1233 /dev/initctl
migration     2 root  cwd       DIR                8,2     4096          2 /
migration     2 root  rtd       DIR                8,2     4096          2 /
migration     2 root  txt   unknown                                        /proc/2/exe
ksoftirqd     3 root  cwd       DIR                8,2     4096          2 /
ksoftirqd     3 root  rtd       DIR                8,2     4096          2 /
ksoftirqd     3 root  txt   unknown                                        /proc/3/exe

説明:
COMMAND:プロセスの名称
PID:プロセス識別子
PPID:親プロセス識別子(-Rパラメータの指定が必要)
USER:プロセス所有者
PGID:プロセスが属するグループ
FD:ファイル記述子であり、アプリケーションはファイル記述子によってファイルを識別する.例えばcwd、txtなど
(1)cwd:current work dirctoryを表す.すなわち、アプリケーションが起動したディレクトリであり、それ自体がこのディレクトリを変更しない限り、アプリケーションの現在の作業ディレクトリである.
(2)txt:このタイプのファイルは、アプリケーションバイナリファイル自体や共有ライブラリなどのプログラムコードであり、上記のリストに表示される/sbin/initプログラム
(3)lnn:library references (AIX);
(4)er:FD information error (see NAME column);
(5)jld:jail directory (FreeBSD);
(6)ltx:shared library text (code and data);
(7)mxx :hex memory-mapped type number xx.
(8)m86:DOS Merge mapped file;
(9)mem:memory-mapped file;
(10)mmap:memory-mapped device;
(11)pd:parent directory;
(12)rtd:root directory;
(13)tr:kernel trace file (OpenBSD);
(14)v86  VP/ix mapped file;
(15)0:標準出力を示す
(16)1:標準入力を示す
(17)2:標準エラーを示す
一般的に標準出力、標準エラー、標準入力後にファイル状態モード:r、w、uなどに従う
(1)u:このファイルが開かれ、読み取り/書き込みモードであることを示す
(2)r:ファイルが開いて読み取り専用モードであることを示す
(3)w:ファイルが開かれ、
(4)スペース:ファイルのステータスモードがunknowでロックされていないことを示します
(5)-:ファイルのステータスモードがunknowでロックされていることを示します
同時にファイルステータスモードの後ろに、関連するロックも付いています.
(1)N:for a Solaris NFS lock of unknown type;
(2)r:for read lock on part of the file;
(3)R:for a read lock on the entire file;
(4)w:for a write lock on part of the file;(ファイルの部分書き込みロック)
(5)W:for a write lock on the entire file;(ファイル全体の書き込みロック)
(6)u:for a read and write lock of any length;
(7)U:for a lock of unknown type;
(8)x:for an SCO OpenServer Xenix lock on part      of the file;
(9)X:for an SCO OpenServer Xenix lock on the      entire file;
(10)space:if there is no lock.
TYPE:DIR、REGなどのファイルタイプ、一般的なファイルタイプ
(1)DIR:ディレクトリを表す
(2)CHR:文字タイプを表す
(3)BLK:ブロックデバイスタイプ
(4)UNIX:UNIXドメインソケット
(5)FIFO:先進先出(FIFO)キュー
(6)IPv 4:インターネットプロトコル(IP)ソケット
DEVICE:ディスク名の指定
SIZE:ファイルのサイズ
NODE:インデックスノード(ディスク上のファイルの識別)
NAME:ファイルを開く正確な名前
インスタンス2:ファイルを使用している人を表示します.つまり、ファイルに関連するプロセスを検索します.
$ lsof /bin/bash
COMMAND   PID USER  FD   TYPE DEVICE   SIZE    NODE NAME
bash    24159 root txt    REG    8,2 801528 5368780 /bin/bash
bash    24909 root txt    REG    8,2 801528 5368780 /bin/bash
bash    24941 root txt    REG    8,2 801528 5368780 /bin/bash

例3:
ディレクトリのファイル情報を再帰的に表示
[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# lsof test/test3
COMMAND   PID USER   FD   TYPE DEVICE SIZE    NODE NAME
bash    24941 root  cwd    DIR    8,2 4096 2258872 test/test3
vi      24976 root  cwd    DIR    8,2 4096 2258872 test/test3

+Dを使用すると、対応するディレクトリの下にあるすべてのサブディレクトリとファイルがリストされます.
インスタンス4:+Dオプションを使用せずに、ディレクトリのすべてのファイル情報を表示する方法
[root@localhost soft]# lsof |grep 'test/test3'
bash      24941 root  cwd       DIR                8,2     4096    2258872 /opt/soft/test/test3
vi        24976 root  cwd       DIR                8,2     4096    2258872 /opt/soft/test/test3
vi        24976 root    4u      REG                8,2    12288    2258882 /opt/soft/test/test3/.log2013.log.swp

インスタンス5:ユーザーが開いているファイル情報をリストします.
$ lsof -u username       ----u  ,u user 

インスタンス6:プログラム・プロセスによって開かれたファイル情報をリストします.
$ lsof -c mysql     --- -c  mysql , lsof | grep mysql

インスタンス7:複数のプロセスで開いている複数のファイル情報をリストします.
$ lsof -c mysql -c apach

インスタンス8:ユーザーとプロセスが開いているファイル情報をリストします.
$ lsof  -u test -c mysql    --- , 

例9:屋外で開いているファイル情報を除く
$ lsof -u ^root   ---^ , root 

インスタンス10:開いているファイルをプロセス番号で表示
$ lsof -p 1

例11:複数のプロセス番号に対応するファイル情報を一覧表示する
$ lsof -p 1,2,3

インスタンス12:あるプロセス番号を除いて、他のプロセス番号が開いているファイル情報をリストします.
$ lsof -p ^1

インスタンス13:すべてのネットワーク接続を一覧表示
$ lsof -i

インスタンス14:すべてのtcpネットワーク接続情報をリストする
$ lsof -i tcp

インスタンス15:udpネットワーク接続情報をすべてリストする
$ lsof -i udp

例16:ポートを使用している人をリストします.
$ lsof -i :3306

インスタンス17:特定のudpポートを使用している人をリストします.
$ lsof -i udp:55

または:特定のtcpポート
$ lsof -i tcp:80

≪インスタンス18|Instance 18|ldap≫:ユーザーのすべてのアクティブなネットワーク・ポートをリストします.
$ lsof -a -u test -i

インスタンス19:すべてのネットワークファイルシステムをリストする
$ lsof -N

インスタンス20:ドメイン名socketファイル
$ lsof -u

インスタンス21:ユーザー・グループが開いているファイル情報
$ lsof -g 555

例22:ファイルの説明に従って対応するファイル情報をリストする
$ lsof -d description(like 2)

例えば、lsof-d txt
例えば、lsof-d 1
例えば、lsof-d 2
説明:
0は標準入力、1は標準出力、2は標準エラーであるため、多くのアプリケーションが開いているファイルのFDは3から始まる
インスタンス23:ファイルの説明範囲に基づいてファイル情報をリストする
$ lsof -d 2-3

インスタンス24:COMMAND列に含まれる文字列「sshd」をリストし、ファイル描画子のタイプがtxtのファイル情報をリストする
$ lsof -c sshd -a -d txt
COMMAND   PID USER  FD   TYPE DEVICE   SIZE    NODE NAME
sshd     2756 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd
sshd    24155 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd
sshd    24905 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd
sshd    24937 root txt    REG    8,2 409488 1027867 /usr/sbin/sshd

インスタンス25:プロセス番号1234のプロセスによって開かれたすべてのIPV 4 network filesがリストされます.
$ lsof -i 4 -a -p 1234

例26:現在接続するホストpeidaを一覧表示する.linuxポートは、20,21,22,25,53,80に関するすべてのファイル情報であり、3秒おきにlsofコマンドを実行します.
$ lsof -i @peida.linux:20,21,22,25,53,80  -r  3