多くの場合、「lsof」は作業する必要のあるマシンにはインストールされませんが、lsofの「機能」が非常に必要になります(AIXなど)。:\
Windows以外の世界に「lsof」のようなアプリケーションはありますか?
更新:例:「/ home / username」ディレクトリを使用するプロセスを知る必要がありますか?
多くの場合、「lsof」は作業する必要のあるマシンにはインストールされませんが、lsofの「機能」が非常に必要になります(AIXなど)。:\
Windows以外の世界に「lsof」のようなアプリケーションはありますか?
更新:例:「/ home / username」ディレクトリを使用するプロセスを知る必要がありますか?
回答:
私は知っていfuser
ます、あなたのシステムで利用可能かどうかを確認してください。
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | less
は、にマウントされたファイルシステムで開いているファイルを持つすべてのプロセスを表示できます/
。特定のヘルプについては、manページを参照してください。
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | while read user pid flags rest; do printf '%10s %10s %10s %s\n' $user $pid $flags "$(</proc/$pid/cmdline)"; done | less
Unixのロゼッタストーンは、質問のこの種のための優れたリソースです。lsofのいくつかの代替案について言及しています(以下を参照)。ただし、lsofは、その機能の事実上の標準アプリケーションであることに注意してください。
特定のファイルが開いているプロセスIDを検索するだけであればfuser
、POSIX準拠のシステムで使用できます。
/proc
ディレクトリを使用するオペレーティングシステムでは、の情報を使用して、プロセスによって開かれているファイル(lsof
最も一般的な操作モードの逆)を照会できます/proc
。一部のオペレーティングシステムには、そのためのコマンドがあります。
procfiles
システムに同梱されています(AIX 5.2以降)。AIX 5.2パフォーマンスツールの更新およびlsof、pfiles、procfilesコマンドの使用法と例も参照してください。pfiles
(2.5以降に存在)。これでうまくいくはずです。以下を除くすべてのファイル記述子マッピングを提供します。
( find /proc -mindepth 1 -maxdepth 1 \
| grep -E [0-9]+ | xargs -n 1 -I% find %/fd \
| xargs ls -l \
| grep -v "Permission denied" ) 2>/dev/null \
| cut -d' ' -f12- | less
特定のプログラムのマッピングのみに関心があることが既にわかっている場合は、代わりに次の行に沿って何かを使用できます。
exec=sshd
pgrep "$exec" | xargs -n 1 ps -p
pgrep "$exec" | xargs -n 1 -I% find /proc/%/fd | xargs ls -l | cut -d' ' -f12- | less