Linuxで開いているファイルを確認する方法

How Check Open Files Linux



「すべてはLinuxのファイルです」ということわざに出くわしたかもしれません。これは完全に真実ではありませんが、それはそれに一連の真実を保持しています。

LinuxおよびUnixライクなシステムでは、すべてがファイルのようです。つまり、Unixシステムのリソースには、ストレージデバイス、ネットワークソケット、プロセスなどのファイル記述子が割り当てられます。







ファイル記述子は、ファイルおよびその他の入出力デバイスを識別する一意の番号です。リソースと、カーネルがリソースにアクセスする方法について説明します。カーネル抽象化ハードウェアリソースへのゲートウェイと考えてください。



残念ながら、ファイル記述子の概念はこのチュートリアルの範囲を超えています。詳細については、以下のリンクを参照してください。



https://en.wikipedia.org/wiki/File_descriptor





つまり、UnixやLinuxなどのUnixライクなシステムは、このようなファイルを頻繁に使用します。 Linuxのパワーユーザーとして、開いているファイルとプロセス、およびそれらを使用しているユーザーを確認することは非常に便利です。

このチュートリアルでは、開いているファイルを表示する方法と、どのプロセスまたはユーザーが責任を負うかに焦点を当てます。



前提条件

始める前に、次のことを確認してください。

  • Linuxシステム
  • rootまたはsudo権限を持つユーザー

これらをお持ちの場合は、始めましょう。

LSOFユーティリティ

Victor A Abellによって作成された、開いているファイルの一覧表示、または略してlsofは、開いているファイルと、それらを開いたプロセスまたはユーザーを表示できるコマンドラインユーティリティです。

lsofユーティリティは、主要なLinuxディストリビューションで利用できます。ただし、インストールされていないため、手動でインストールする必要がある場合があります。

Debian / Ubuntuにlsofをインストールする方法

Debianにインストールするには、次のコマンドを使用します。

sudo apt-get update

sudo apt-get installlsof-と

REHL / CentOSにインストールする方法

REHLおよびCentOSにインストールするには、次のコマンドを使用します。

sudodnfアップデート

sudodnfインストールlsof

Archにインストールする方法

Archで、次のコマンドを使用してパッケージマネージャーを呼び出します。

sudoパックマン-彼の

sudoパックマン-NSlsof

Fedoraにインストールする方法

Fedoraでは、次のコマンドを使用します。

sudo yum installlsof

lsofユーティリティをインストールして更新すると、使用を開始できます。

基本的なlsofの使用法

lsofツールを使用するには、次のコマンドを入力します。

sudolsof

上記のコマンドを実行すると、lsofは以下に示すように多くの情報をダンプします。

上記の出力は、プロセスによって開かれたすべてのファイルを示しています。出力にはさまざまな列があり、それぞれがファイルに関する特定の情報を表します。

  • COMMAND列 –ファイルを使用しているプロセスの名前を示します。
  • PID –ファイルを使用するプロセスのプロセス識別子を示します。
  • TID –プロセスのタスクID(スレッド)を表示します。
  • TASKCMD –タスクコマンドの名前を表します。
  • ユーザー –プロセスの所有者。
  • FD –ファイル記述子番号を表示します。これは、プロセスがファイルを使用する方法です。この列の出力で使用できるオプションは次のとおりです。
  • cwd –現在の作業ディレクトリ。
  • ミーム –メモリマップトファイル
  • pd –親ディレクトリ
  • jld –刑務所ディレクトリ
  • ltx –共有ライブラリテキスト
  • rtd - ルートディレクトリ。
  • txt –プログラムコードとデータ
  • NS –カーネルトレースファイル。
  • エラー –ファイル記述子情報エラー
  • mmp –メモリマップトデバイス。
  • タイプ –次のように、ファイルに関連付けられているノードのタイプを示します。
  • Unix –Unixドメインソケット用。
  • あなたへ –ディレクトリを表します
  • REG –通常のファイルを表す
  • CHR –特殊文字ファイルを表します。
  • リンク –シンボリックリンクファイル
  • BLK –特殊ファイルをブロックする
  • インターネット –インターネットドメインソケット
  • FIFO –名前付きパイプ(先入れ先出しファイル)
  • パイプ –パイプ用

などなど。

  • デバイス –デバイス番号を、特殊文字ファイル、ブロック特殊、通常、ディレクトリ、NFSファイルの順にコンマで区切って表示します。
  • サイズ/オフ –ファイルのサイズprファイルオフセットをバイト単位で示します。
  • ノード –ローカルファイルのノード番号、インターネットプロトコルタイプのタイプなどを示します。
  • 名前 –ファイルが配置されているマウントポイントとfsの名前を示します。

ノート: 列の詳細については、lsofのマニュアルを参照してください。

ファイルを開いたプロセスを表示する方法

Lsofには、特定のファイルを開いたプロセスのみを表示するように出力をフィルタリングするのに役立つオプションが用意されています。

たとえば、ファイル/ bin / bashを開いたファイルを表示するには、次のようにコマンドを使用します。

sudolsof/午前/bash

これにより、次のような出力が得られます。

コマンドPIDユーザーFDタイプデバイスサイズ/オフノード名

ksmtuned1025ルートtxtREG2530 1150704 428303 /usr/午前/bash

bash 2968centos txt REG2530 1150704 428303 /usr/午前/bash

bash 3075centos txt REG2530 1150704 428303 /usr/午前/bash

特定のユーザーが開いたファイルを表示する方法

また、出力をフィルタリングして、特定のユーザーが開いたファイルを表示することもできます。これを行うには、-uフラグの後にユーザー名を次のように使用します。

sudolsof-u数百

これにより、次のような出力が得られます。

特定のプロセスによって開かれたファイルを表示する方法

特定のプロセスによって開かれたすべてのファイルを表示したいとしますか?このために、プロセスのPIDを使用して出力をフィルタリングできます。

たとえば、次のコマンドは、bashによって開かれたファイルを示しています。

sudolsof-NS 3075

これにより、次のようにsystemdによって開かれたファイルのみが表示されます。

ディレクトリで開いたファイルを表示する方法

特定のディレクトリでファイルを開くには、+ Dオプションに続けてディレクトリパスを渡すことができます。

たとえば、/ etcディレクトリに開いているファイルを一覧表示します。

sudolsof + D/NS

以下はこれに対する出力です:

ネットワーク接続を表示する方法

Linuxのすべてがファイルであるため、TCPファイルや接続などのネットワークファイルを取得できます。

次のコマンドを使用できます。

sudolsof-私TCP

これにより、システム内のTCP接続が提供されます。

以下に示すコマンドを使用して、特定のポートでフィルタリングすることもできます。

sudolsof-私22

これにより、次のような出力が得られます。

ファイルを継続的に表示する方法

Lsofは、数秒ごとに出力をループするモードを提供します。これにより、プロセスまたはユーザーが開いたファイルを継続的に監視できます。

ただし、このオプションでは、プロセスを手動で終了する必要があります。

たとえば、以下のコマンドは、ポート22で開かれたファイルを継続的に監視します。

sudolsof -r-私22

ご覧のとおり、3番目のループで、lsofはSSH上のサーバーへの確立された接続をキャッチします。

結論

Lsofは非常に便利なユーティリティです。重要なファイルを監視したり、ファイルを開いているユーザーやプロセスを監視したりできます。これは、システムのトラブルシューティングや悪意のある試みを探すときに非常に役立ちます。

このチュートリアルに示されているように、さまざまな例と方法を使用して、lsofツールが提供する機能を組み合わせてカスタム監視を行うことができます。

読んで共有していただきありがとうございます!あなたが何か新しいことを学んだことを願っています!