
多くの場合、lsof
私が使用する必要があるマシンにはインストールされていませんが、lsof
その「パフォーマンス」は非常に必要です(例えば、AIX)。 :\
lsof
Windows以外の世界にも同様のアプリケーションはありますか?
たとえば、どのプロセスがこのディレクトリを使用しているかを知る必要がありますか/home/username
?
答え1
わかりましたfuser
システムで利用可能であることを確認してください。
答え2
これUnix ロゼッタストーンは、このような質問に答えるための素晴らしいリソースです。いくつかの選択肢について言及します。ラソフ(下記参照)。しかし、lsofはその機能の事実上の標準的なアプリケーションです。
特定のファイルを開いたプロセスIDを見つけるには、次のようにします。fuser
すべてのPOSIX互換システムで。
ディレクトリがあるオペレーティングシステムでは、を渡すことが/proc
できます。一部のオペレーティングシステムには、次のコマンドがあります。lsof
/proc
- システム:
procfiles
システムに付属しています(AIX 5.2から始まり)。また、見ることができますAIX 5.2 パフォーマンス・ツールの更新そしてlsof、pfiles、procfiles コマンドの使用方法と例。 - ソラリス:(
pfiles
既存の2.5から開始)。
答え3
Solarisを実行しているlsof
場合pfiles
。
たとえば、
pfiles /proc/*
答え4
これはトリックを行う必要があります。以下を除くすべてのファイル記述子マッピングを提供します。
- 表示する権限がない、または
- 「Permission Denied」文字列を含むファイルに適用されます。
( 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