GNU/Linux >> Linux の 問題 >  >> Linux

Linuxオタク向けの18の簡単な「lsof」コマンドの例

lsof は、「開いているファイルのリスト」をチェックするためのすべてのUnixおよびLinuxのようなオペレーティングシステム用のコマンドラインユーティリティです。 「lsof」という名前自体は、この機能に由来しています。 lsofコマンドは主に、さまざまなプロセスによって開かれたファイルに関する情報を取得するために使用されます。システムで開いているファイルは、ディスクファイル、ネットワークソケット、名前付きパイプ、デバイスなど、さまざまな種類のものにすることができます。この独特の機能により、Linuxオペレーティングシステムをより良い方法でデバッグおよび理解することができます。

CentOSの最小限のインストールを行う場合 / RHEL /Ubuntu / OpenSUSE 、lsofはデフォルトのインストールの一部ではないため、次のコマンドを使用してlsofコマンドまたはユーティリティをインストールします

CentOS/RHELシステムの場合

〜] #yum install lsof -y 

Debianベースのシステム(Ubuntu / Linux Mint)

〜] #apt install lsof -y 

OpenSUSEシステムの場合

〜] #zypper install lsof 

コマンド「lsof」には、多くのオプションとスイッチが装備されています。これらの重要なもののいくつかを探索することは非常に興味深いでしょう。この記事では、Linuxオタク向けの18の便利なlsofコマンドの例について説明します。

例:1)システムで開いているすべてのファイルを一覧表示します(lsof)

オプションを指定せずにlsofコマンドを実行すると、アクティブなすべてのプロセスに属するシステムで開いているすべてのファイルが一覧表示されます。

コマンドラインでオプションなしで「lsof」コマンドを入力するだけで、次の出力が得られます。

:-lsof出力はSTDOUTに多くの情報を提供するため、パイプ「|」を使用することをお勧めします。この出力をページごとに表示する操作。

 [[メール保護]〜]#lsof | moreCOMMAND PID TIDユーザFD TYPEは、デバイスサイズ/ OFF NODE NAMEsystemd 1つのルートは、4096 128 DIR 253,0 CWD / 1ルートをシステムD REG 253,0 1489960 50674818の/ usr / libに/にsystemd / TXT 1つのルートをシステムD / 4096 128 DIR 253,0 RTD systemdsystemd 1 root mem REG 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd.so.1.3.0systemd usr 64> 75 3 

注意深く調べた場合の上記のコマンド出力は、多くのパラメーターを含む多くの情報を提供します。たとえば、「 systemd」を処理します 」(デーモンプロセス)にはプロセスID( PID )があります )「1」の場合、ユーザーは「ルート」です。 「、ファイル記述子( FD )「 cwd Linuxシステムで開いているファイルに対してファイル記述子が自動的に生成されることを知っているので、FDには多くの値があります。以下は、lsofコマンドに使用されるよく知られた「FD」値の一部です。

:場合によっては、「mem」の後に数字と「r」、「u」、「w」などのさまざまな文字が続きます。これらの文字は、読み取りの場合は「r」、書き込みの場合は「w」、読み取りの場合は「u」です。と書いてください。

最後に、「タイプ コマンド出力の「」は、ファイルのタイプを示します。 Linuxシステムの標準的なファイルの種類は次のとおりです。

これと一緒に表示される他のフィールドは次のとおりです。

  • デバイス –>デバイスID
  • サイズ/オフ –>このプロセスの実際のサイズ(実行時に取得)
  • ノード –>通常、ディレクトリまたは親ディレクトリのiノード番号
  • 名前 –>パスまたはリンク

例:2)特定のファイルシステム(/ proc)の開いているファイルを一覧表示する

ご存知のとおり、「 / proc 」はLinuxOSの存続期間中のみ存在します。このディレクトリには、プロセスに関連する重要な情報が多数含まれています。 / procで「lsof」を実行すると、興味深い出力が表示されます。

 [[email protected]〜]#lsof / procCOMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMEsystemd 1 root 9r REG 0,3 r / swapssystemd-j 462 root 10r REG 0,3 0 6936 / proc / sys / kernel / hostnamelsof 5186 root 3r DIR 3r DIR 0,3保護された]〜]#

前述のように、「lsof」自体の「lsof」がここにキャプチャされ、すべての詳細が表示されます。 「lsof」以外にも、systemdやrsyslogdなど、スワップやマウントなどの目的で使用されるデーモンであるプロセスがあります。

同様に、/ var/logなどの別のファイルシステムの開いているファイルを一覧表示できます

 [[メール保護]〜]#lsof / var / log / 

lsofコマンドは、dfコマンドとduコマンドが同じファイルシステムの異なるディスク使用量を示している状況で非常に便利です。lsofコマンドを使用すると、開いて何らかのプロセスで使用されている間に削除されたファイルを見つけることができます。

 [[メール保護]〜]#lsof / var / log | grep-i"削除済み"

上記のコマンドは、削除されたファイルのpidを提供しますが、それらは削除された状態でシステムにまだ存在しています。したがって、ファイルシステムからスペースを解放するために、そのpidによってプロセスを安全に強制終了できます。

例:3)「lsof」コマンドの開いているファイルのリスト

「lsof」自体がエラーメッセージをスローします

 [[email protected]〜]#lsof lsoflsof:lsofのステータスエラー:そのようなファイルまたはディレクトリはありません4.87 

例:4)ユーザーの開いているファイルのリスト(lsof -u

「lsof」は、Linuxシステムにログインしたすべてのユーザーに使用できます。この場合、「lsof」はそれぞれのユーザーに対して開いているすべてのファイルを表示します。

rootユーザーの開いているすべてのファイルを一覧表示する

 [[メール保護]〜]#lsof -u root | moreCOMMAND PIDユーザFD TYPEは、デバイスサイズ/ OFF NODE NAMEsystemd 1つのルートは、4096 128 DIR 253,0 CWD / 1ルートをシステムD REG 253,0 1620416 51034677の/ usr / libに/にsystemd / systemdsystemd TXT 1つのルートをシステムD / 4096 128 DIR 253,0 RTD 1つのルートMEM REG 253,0 20032 33628284 /usr/lib64/libuuid.so.1.3.0systemd 1ルートMEM REG 253,0 252704 33745961 /usr/lib64/libblkid.so.1.1.0systemd 1ルートMEM REG 253,0 90632 33628275 /usr/lib64/libz.so.1.2.7systemd 1 root mem REG 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99systemd 1 root mem 65 so.1.1.0…………………………………………………………

root以外のユーザーの開いているファイルのリスト、linuxtechiユーザーの開いているすべてのファイルを見てみましょう

 [[email protected]〜]#lsof -u linuxtechi | moreOr [[メール保護]〜]#lsof -l -u linuxtechi |詳細
COMMAND PIDユーザFD型デバイスサイズ/ OFF NODE NAMEsshd 2657 linuxtechi 4096 128 / sshdの2657 linuxtechi TXT REG 253,0 815520 34698340の/ usr / sbinに/ DIR 253,0 RTD 128 / sshdの2657 linuxtechi 4096 DIR 253,0をCWD
 sshdsshd 2657 linuxtechi DEL REG 0,4 23850は/ dev / zerosshd 2657 linuxtechi MEM REG 253,0 15472 33831639 /usr/lib64/security/pam_lastlog.sosshd 2657 linuxtechi MEM REG 253,0 68192 33628305 /usr/lib64/libbz2.so。 1.0.6sshd 2657 linuxtechi MEM REG 253,0 153192 33618596 /usr/lib64/liblzma.so.5.0.99sshd 2657 linuxtechi MEM REG 253,0 91496 33628319 /usr/lib64/libelf-0.163.sosftp-serv 2661 linuxtechi MEM REG 253 、0 14608 33618582 /usr/lib64/libutil-2.17.sosftp-serv 2661 linuxtechi mem REG 253,0 61856 33863972 /usr/lib64/liblber-2.4.so.2.10.3sftp-serv 2661 linuxtechi mem REG 253,0 344224 33863974 /usr/lib64/libldap-2.4.so.2.10.3sftp-serv 2661 linuxtechi mem 19 REG 33618298 /usr/lib64/libdl-2.17.sosftp-serv 2661 linuxtechi mem REG 253,0 2516624 33657314 /usr/lib64/libcrypto.so.1.0.2ksftp-serv 2661 linuxtechi mem 253/636 / LD-2.17.sosftp-SERV 2661 linuxtechi 0R FIFO 0,8 0t0 24046 pipesftp-SERV 2661 linuxtechi 1ワットFIFO 0,8 0t0 24047 pipesftp-SERV 2661 linuxtechi 2ワットFIFO 0,8 0t0 24048 pipebash 2670 linuxtechi CWD DIR 253,0 79 17157147 / home/linuxtechi………………………………………………………………………

rootユーザーを除くすべての開いているファイルを一覧表示するには、rootユーザーの前に^(キャレット記号)を使用します(lsof -u ^ root)、

 [[メール保護]〜]#lsof -u ^ root | moreCOMMAND PID TIDユーザFD型デバイスサイズ/ OFF NODE NAMEdbus-DAEM 1662 DBUSがDIR 253,0 RTD DBUS 4096 128 / DBUS-DAEM 1662 DBUS REG 253,0 441176 17133533 TXT 4096 128 / DBUS-DAEM 1662 DIR 253,0 CWD / USR / binに/ dbusの-daemondbus-DAEM 1662 dbusのMEM REG 253,0 57824 33618566 /usr/lib64/libnss_files-2.17.sodbus-daem 1662 dbusのMEM REG 253,0 19512 33618298 /usr/lib64/libdl-2.17.sodbus- daem 1662 dbus mem REG 253,0 398272 33628261 /usr/lib64/libpcre.so.1.2.0dbus-daem 1662-daem 1662 ...... 682/619……23 …………………………………………………………………………………………

例:5)開いているすべてのインターネットおよびUNIXドメインファイルを一覧表示します(lsof -i -U)

lsofコマンドで「-i-U」オプションを使用して、システム上で開いているすべてのインターネットおよびUNIXドメインファイルを一覧表示します。例を以下に示します

。 #のlsof -i -UCOMMAND PID USER FD型デバイスのSIZE / OFF NODE NAMEsystemd 1つのルート12U UNIX 0xffff8800b8baab40 0t0 11075 /実行/ systemdに/のcgroup-agentsystemd 1つのルート13U UNIX 0xffff8800b8bab2c0 0t0 11077 /実行[]〜[電子メールが保護された]
 /にsystemd / privatesystemd 1つのルート42UのIPv4 16576 0t0 TCP *:(LISTEN)SUNRPC 1つのルート43UのIPv4 16577 0t0 UDP *をシステムD:sunrpcrpcbind 1633 RPC 3U UNIX 0xffff8800bab8cf00 0t0 16574 /var/run/rpcbind.sockrpcbind 1633 RPC 4UのIPv4 16576 0t0 TCP *:SUNRPC(LISTEN)のrpcbind 1633 RPC 5UのIPv4 16577 0t0 UDP *:sunrpcrpcbind 1633 RPC 6UのIPv6 16578 0t0 TCP *:SUNRPC(LISTEN)のrpcbind 1633 RPC 7UのIPv6 16579 0t0 UDP *:sunrpcrpcbind 1633 RPC 10UのIPv4 16649 0t0 UDP *: 960sshd 2532ルート3U IPv4の21120 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65110(ESTABLISHED)は2532ルート4U UNIX 0xffff8800bbef3a40 0t0 21260 socketsshd 2532ルート8U UNIX 0xffff8800b8afd680 0t0 21298 /tmp/ssh-QHz9BdtRvt/agent.2532sshd 2536ルート3UをsshdのIPv4 21191 0t0 TCP 192.168.1.6:ssh-> 192.168.1.5:65112(ESTABLISHED)sshd 2536 root 4uunix0xffff8800b8afd2c0…………0t021363ソケット…… ……………………………………………………

例:6)開いているすべてのIPv4ネットワークファイルを一覧表示します(lsof -i 4)

lsofコマンドで「-i-4」オプションを使用して、IPv4用に開いているすべてのネットワークファイルを一覧表示します。

 [[email protected]〜]#lsof -i 4COMMAND PID FD TYPE DEVICE SIZE / OFF NODE NAMEsystemd 1 root 42u IPv4 16576 rp 16576 0t0 TCP *:sunrpc(LISTEN)system RPC 4U IPv4の16576 0t0 TCP *:SUNRPC IPv4の3U 2258ルートをsshdが(LISTEN)19493 0t0 TCP *:SSH(LISTEN)マスター2360ルート13UのIPv4 20087 0t0 TCPはlocalhost:IPv4の20983 0t0 UDP 6U SMTP(LISTEN)のdhclient 2494根*: bootpcdhclient 2494ルート20UのIPv4 20951 0t0 UDP *:IPv4の20866 0t0 UDP 6U 24884dhclient 2514根*:bootpcsshd 2532ルート3UのIPv4 21120 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65110(ESTABLISHED)sshdは2536ルート3UのIPv4 21191 0t0 TCP 192.168.1.6:ssh->192.168.1.5:65112(ESTABLISHED)sshd 2621 root 3u IPv4 23506 0t0 TCP 192.168.1.6:ssh->192.168.1.9:65422(ESTABLISHED)sshd 2655 root 3u IPv4 23863 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49992(ESTABLISHED)sshd 2657 linuxtechi 3u IPv4 23795 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49990(ESTABLISHED) 0t0 TCP 192.168.1.6:ssh->192.168.1.9:49992(確立済み)[[メール保護]〜]#

プロセスIDが「any_number」である特定のプロセスによって使用される開いているすべてのIPv4ネットワークファイルを一覧表示するには、以下に例を示します

rpcbindプロセスのすべてのIPv4ネットワークファイルを一覧表示するとします

構文: #lsof i 4 -a -p {process_pid}

 [[email protected]〜]#lsof -i 4 -a -p 1633COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMErpcbind 1633 rpc 4u IPv4 16576 IPv4 577 0t0 TCP *:sunrpc(LISTEN)rpcbind 1633 UDP *:sunrpcrpcbind 1633 rpc 10u IPv4 16649 0t0 UDP *:960 [[メール保護]〜]#

例:7)IPv6用に開いているすべてのネットワークファイルを一覧表示します(lsof -i 6)

ipv6ドメインがサポートされていると仮定すると、lsofの出力は次のようになります。

 [[email protected]〜]#lsof -i 6COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMEsystemd 1 root 44u IPv6 16578 6 RPC 6UのIPv6 16578 0t0 TCP *:SUNRPC(LISTEN)のrpcbind 1633 RPC 7UのIPv6 16579 0t0 UDP *:sunrpcrpcbind 1633 RPC 11UのIPv6 16650 0t0 UDP *:960sshd 2258ルート4UのIPv6 19504 0t0 TCP *:SSH(LISTEN)マスター2360ルート14U IPv6の20088 0t0 TCPはlocalhost:SMTP(LISTEN)のdhclient 2494ルート21UのIPv6 20952 0t0 UDP *:16498dhclient 2514ルート21UのIPv6 20823 0t0 UDP *:34955httpd 2594ルート4UのIPv6 22703 0t0 TCP *:HTTP(LISTEN)のhttpd 2595 apacheの4UのIPv6 22703 0t0 TCP *:http(LISTEN)httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http(LISTEN)httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http(LISTEN)httpd 2598 ape 03 0t0 TCP *:http(LISTEN)httpd 2599 apache 4u IPv6 22703 0t0 TCP *:http(LISTEN)[[email protected]〜]#

例:8)特定のポート(lsof -i TCP / UDP:port)で実行されているすべてのTCPおよびUDPプロセスを一覧表示します

80ポートで実行されているすべてのTCPプロセスを一覧表示するとします。次のコマンドを使用します

 [[email protected]〜]#lsof -i TCP:80COMMAND PID UID TYPE DEVICE SIZE / OFF NODE NAMEhttpd 2594 root 4u IPv6 22703 0t0 TCP *:http(LISTEN)httpd 2595 apache http(LISTEN)httpd 2596 apache 4u IPv6 22703 0t0 TCP *:http(LISTEN)httpd 2597 apache 4u IPv6 22703 0t0 TCP *:http(LISTEN)httpd 2598 apache 4u 25 IPv6 22703 0t0 TCP *:http(LISTEN)[[email protected]〜]#

TCPポートで開いているすべてのファイルをポート範囲(1〜1048)から一覧表示するには、次のコマンドを使用します

 [[email protected]〜]#lsof -i TCP:1-1048COMMAND PID FD TYPE DEVICE SIZE / OFF NODE NAMEsystemd 1 root 41u IPv4 16863 0t0 TCP *:sunrpc(LISTEN) *:SUNRPC(LISTEN)のrpcbind 1663 RPC 4UのIPv4 16863 0t0 TCP *:SUNRPC(LISTEN)のrpcbind 1663 RPC 6UのIPv6 16865 0t0 TCP *:SUNRPC(LISTEN)2294ルートをsshdは3UのIPv4 19949 0t0 TCP *:SSHは、(LISTEN)2294をsshdはルート4UのIPv6 19965 0t0 TCP *:SSH(LISTEN)マスター2433ルート13UのIPv4 21026 0t0 TCPはlocalhost:SMTP(LISTEN)マスター2433ルート14UのIPv6 21027 0t0 TCPはlocalhost:SMTPは(LISTEN)3UのIPv4 21737 0t0 TCP 192.168 2600ルートをsshdが。 1.3:ssh-> 192.168.1.9:52393(ESTABLISHED)sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486(ESTABLISHED)sshd 2663 root> 192.168.1.9 :52489(ESTABLISHED)httpd 2837 root 4u IPv6 26112 0t0 TCP *:http(LISTEN)httpd 2838 apache 4u IPv6 26112 LIST 0t0 TCP *:http(LISTEN)httpd 2838 4u IPv6 26112 0t0 TCP *:http(LISTEN)httpd 2841 apache 4u IPv6 26112 0t0 TCP *:http(LISTEN)httpd 2842 192.168. :ssh-> 192.168.1.9:53541(ESTABLISHED)sshd 2895 linuxtechi 3u IPv4 26896 0t0 TCP 192.168.1.3:ssh->192.168.1.9:53541(ESTABLISHED)[[email protected]〜]#

特定のポートで実行されているすべてのUDPプロセスを一覧表示するには、以下のコマンドを使用します

 [[email protected]〜]#lsof -i UDP:16498COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMEdhclient 2494 root 21u IPv6 20952 0t0 UDP *:16498 [[email protected]〜]#

:Linuxシステムで開いているすべてのUDPプロセスを一覧表示するには、コマンド「 lsof -iUDP」を使用します。 」

例:9)特定のデバイス(lsof )の開いているすべてのファイルを一覧表示します

次のコマンドを使用して、/ dev/vda1で開いているすべてのファイルを一覧表示できます。

注: この場合、デバイスタイプは仮想であり、通常、タイプは/ dev / hd / sd {number}

です。
 [メール保護]〜]#lsof / dev / vda1 | moreCOMMAND PIDユーザFD型デバイスサイズ/ OFF NODE NAMEsystemd 1つのルートは、DIR 253,1 4096 2 CWD / 1ルートをシステムD DIR 253,1 4096 2 / REG 253,1 1577264 262271 / LIB /にsystemd / systemdsystemd 1つのルートTXT 1つのルートをシステムD RTD mem REG 253,1 18976 262252 /lib/x86_64-linux-gnu/libuuid.so.1.3.0systemd 1 root mem REG 253,1 262408 262245 / lib / x86_64-linux-gnu/libblkid.so.1。 mem REG 253,1 14608 266364 /lib/x86_64-linux-gnu/libdl-2.23.sosystemd 1 root mem REG 253,1 456632 262207 / lib / x86_64-linux-gnu / libpcre.so.3.1 253,1 1868984 266362 /lib/x86_64-linux-gnu/libc-2.23.sosystemd 1 root mem REG 253,1 138696 266361 / lib / x86_64-linux-gnu / libpthread-2.23.sosystemd 1 261756 /lib/x86_64-linux-gnu/libmount.so.1.1.0 

例:10)NFSファイルシステムで開いているファイルのあるプロセスを一覧表示する

Linuxボックスにnfsファイルシステムをマウントしたが、nfsサーバーにアクセスできず、そのnfsファイルシステムで開いているファイルを含むすべてのプロセスを一覧表示したい場合があります。

 [[email protected]〜]#lsof -b  

例:11)端末関連の開いているファイルを一覧表示します(lsof / dev / tty {number})

次のコマンドは、/ dev/tty1で開いているすべてのファイルに使用されます。

:この場合、端末タイプは「tty1」です。 / dev / tty

のように、他の端末タイプも使用できます。
 [[email protected]〜]#lsof / dev / tty1COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMEbash 2442 root 0u CHR 4,1 0t0 4689 / dev / tty1bash 2442 root 1 u / tty1bash 2442 root 2u CHR 4,1 0t0 4689 / dev / tty1bash 2442 root 255u CHR 4,1 0t0 4689 / dev / tty1 [[メール保護]〜]#

例:12)リストPID、コマンド名、ファイル記述子、デバイス番号、ファイルiノード番号(lsof -FpcfDi)

各プロセスのPID(P)およびコマンド名(c)フィールド出力、ファイル記述子(f)、ファイルデバイス番号(D)、および各ファイルのファイルiノード番号(i)を取得するための「lsof」の興味深いオプションの1つ各プロセスの例を以下に示します

 [[メール保護]〜]#lsof -FpcfDi | morep1csystemdfcwdD0xfd00i128frtdD0xfd00i128ftxtD0xfd00i51034677fmemD0xfd00i33628284………………

注: 出力の長いリストが表示されますが、スペースを節約するためにこれは短くカットされています。

例:13)すべてのネットワーク接続を一覧表示します(lsof -i)

lsofコマンドで「-i」オプションを使用して、ネットワーク関連のすべてのプロセスまたはコマンドを一覧表示します。例を以下に示します。

SUNRPCにsystemd(LISTEN)1ルート43UのIPv4 16864 0t0 UDP *:sunrpcrpcbind 1663 RPC#lsofを-iCOMMAND PID USER FD型デバイスのSIZE / OFF NODE NAMEsystemd 1つのルート41UのIPv4が16863 0t0 TCP * []〜[電子メールが保護された]
 4U IPv4の16863 0t0 TCP *:SUNRPC(LISTEN)のrpcbind 1663 RPC 5UのIPv4 16864 0t0 UDP *:sunrpcrpcbind 1663 RPC 11UのIPv6 17051 0t0 UDP *:988sshd 2294ルート3UのIPv4 19949 0t0 TCP *:SSH(LISTEN)IPv6の4U 2294ルートをsshdは19965 0t0 TCP *:ssh(LISTEN)rpc.statd 2300 rpcuser 10u IPv6 19974 0t0 UDP *:48486rpc.statd 2300 rpcuser 11u rpuser 11u IPv6 20045 0t0 TCP *:39334(LIST .mount 2311 root 8u IPv4 19911 0t0 TCP *:mountd(LISTEN)master 2433 root 13u IPv4 21026 0t0 TCP localhost:smtp(LISTEN)master 2433 u root 1027 0t0 TCP localhost:smtp(LISTEN)dhclient 2563 root 6u IPv4 21589 0t0 UDP *:bootpcdhclient 2583 root ESTABLISHED)sshd 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486(ESTABLISHED)[[email protected]〜]#

例:14)IPv4/IPv6ソケットファイルの検索

IPv4ソケットファイルを見つけるには、以下のコマンドを使用して、IPアドレスをシステムIPに置き換えます

 [[email protected]〜]#lsof [email protected] COMMAND PID FD TYPE DEVICE SIZE / OFF NODE NAMEsshd 2600 root 3u IPv4 21737 0t0 TCP 192.168.1.3:ssh 2659 root 3u IPv4 22056 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52486(ESTABLISHED)sshd 2663 root 3u IPv4 22123 0t0 TCP 192.168.1.3:ssh-> 192.168.1.9 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848(ESTABLISHED)sshd 2728 linuxtechi 3u IPv4 25004 0t0 TCP 192.168.1.3:ssh->192.168.1.9:52848(ESTABLISHED)[[email protected]〜]#

ゼロの実行が含まれる関連する数値のコロン形式のアドレスでIPバージョン6ソケットファイルを検索するには(たとえば、ループバックアドレス(127.0.0.1)は、以下のコマンドとオプションを使用します:

 [[email protected]〜]#lsof [email protected] [::1] COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAMEmaster 2433 root 14u IPv6 21027 0t0 TCP localhost:smtp(LISTEN)[[email protected] 〜]#

例:15)プロセスID(lsof -p )に属するすべてのプロセスまたはコマンドを一覧表示します

特定のプロセスIDに属するすべてのプロセスまたはコマンドを一覧表示するとします。例を以下に示します

 [[メール保護]〜]#lsof -p 2842 | moreCOMMAND PID USER FDタイプデバイスサイズ/ OFF NODE NAMEhttpd 2842アパッチCWD DIR 253,0 4096 128 / httpdの2842アパッチRTD DIR 253,0 4096 128 / httpdの2842アパッチTXT REG 253,0 523680 34641136の/ usr / sbinに/ httpdhttpd 2842アパッチMEM REG 253,0 110808 33618576 /usr/lib64/libresolv-2.17.sohttpd 2842 apacheのMEM REG 253,0 27512 33618564 /usr/lib64/libnss_dns-2.17.sohttpd 2842 apacheのMEM REG 253,0 57824 33618566は/ usr / lib64に/ libnss_files-2.17.sohttpd 2842 apache mem 253,0 27808 17080385 /usr/lib64/httpd/modules/mod_cgi.sohttpd 2842 apache mem 628 ………………………………………

例:16)特定のユーザーに属するすべてのプロセスを強制終了します

lsofコマンドは、特定のユーザーに属するすべてのプロセスを強制終了する場合に非常に便利です。以下の例では、linuxtechiユーザーに属するすべてのプロセスを強制終了します

 [[email protected]〜]#kill -9 `lsof -t -u linuxtechi` [[email protected]〜]#

例:17)特定のディレクトリ(lsod + D )の下にあるすべての開いているファイルを一覧表示します

/ var / logディレクトリの下に開いているすべてのファイルを一覧表示し、次のlsofコマンドを使用するとします。

 [[email protected]〜]#lsof + D / var / log / COMMAND PID USER TYPE DEVICE SIZE / OFF NODE NAMEauditd 1635 root 4w REG 253,0 1177238 51031316 / var / log / audit /ルート3wREG253,0 240 392280 /var/log/wpa_supplicant.logtuned 2295 root 3w REG 253,0 6000 17713597 /var/log/tuned/tuned.logrsyslogd 2296 2296 root 7w REG 253,0 449328 338975 / var / log / messagesrsyslogd 2296 root 8w REG 253,0 26038 338976 / var / log / securersyslogd 2296 root / log / securersyslogd 2296 root 2296 root 9w REG 、0 9458 138 /var/log/boot.loghttpd 2837 root 2w REG 253,0 2829 34768157 / var / log / httpd / error_loghttpd 2837 root 253,0 2829 34768157 / var / log / httpd / error_loghttpd 2838 ap ache 7w REG 253,0 0 34824416 / var / log / httpd / access_loghttpd 2839 apache 2w REG 253,0 2829 34768157 / var / log / httpd / error_loghttpd http 2840 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/error_loghttpd     2840 apache    7w   REG  253,0        0 34824416 /var/log/httpd/access_loghttpd     2841 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/ error_loghttpd     2841 apache    7w   REG  253,0        0 34824416 /var/log/httpd/access_loghttpd     2842 apache    2w   REG  253,0     2829 34768157 /var/log/httpd/error_loghttpd     2842 apache    7w   REG  253,0        0 34824416 /var/log/httpd /access_log[[email protected] ~]#

注: In above command if we use +D option then lsof will list all open files of a directory recursively and if you don’t want to list open files of directory recursively then use “+d” option

Example:18) “lsof” to check who opened the log file (to find PID)

The following command option is used to find who opened the /var/log/httpd/access.log file and what is the PID of that process. And then with “ps -ef” command we can find exact user

[[email protected] ~]# lsof -t /var/log/httpd/access_log310931103111311231133114[[email protected] ~]#[[email protected] ~]# ps -ef | grep -E "3109|3110|3111|3112|3113|3114" | grep -v grepor[[email protected] ~]# ps -fp "$(lsof -t /var/log/httpd/access_log | xargs echo)"root      3109     1  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3110  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3111  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3112  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3113  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUNDapache    3114  3109  0 03:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND[[email protected] ~]#

Many options of the “lsof” command can be combined for multiple purposes as below are some combination of flags “-c”, “-u” and “-I”. For more details refer the manual page.

また読む :11 Xargs Command Examples in Linux

The below command combination will give output every 1 second about “linuxtechi” home directory what all the files opened repeatedly.

[email protected] ~}# lsof -u linuxtechi -c init -a -r1=======COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAMEinita.sh 2971 linuxtechi  cwd    DIR    8,1     4096  393218 /home/linuxtechiinita.sh 2971 linuxtechi  rtd    DIR    8,1     4096       2 /inita.sh 2971 linuxtechi  txt    REG    8,1    83344  524367 /bin/dashinita.sh 2971 linuxtechi  mem    REG    8,1  1434567 1443695 /lib/i386-linux-gnu/libc-2.13.so……………………………………………………………………………

Conclusion:

As mentioned in the introduction section “lsof” is very powerful and useful command in Linux based distributions. This command and options listed can be used for various purposes like debugging, troubleshooting and triaging Linux processes. Mentioned options and combinations if tried, will help one to establish thorough understanding of “lsof” command. Other commands like lstat , stat and ls also can be explored in combination of “lsof” command.

また読むHow to Enable Timestamp in Linux History Command Output


Linux
  1. Linuxでの8つのクイック日付コマンドの例

  2. 初心者向けのLinuxkillallコマンド(8例)

  3. 7Linuxでのlsofコマンドの例

  1. Linuxでの16のクイックCatコマンドの例

  2. Linuxユーザー向けの12のIPコマンド例

  3. 初心者向けのLinuxdirコマンド(10例)

  1. 初心者向けのLinuxrmコマンドの説明(8例)

  2. 初心者向けのLinuxlnコマンドチュートリアル(5つの例)

  3. 初心者向けのLinuxnlコマンドチュートリアル(7つの例)