解決策 1:
私は lsof
が大好きです 、しかし、このような単純な質問にはやり過ぎだと思います。 /proc
filesystem には、知りたいことがすべて含まれています。おそらく次の例が最適でしょう:
# ps ax|grep tail 7196 pts/4 S+ 0:00 tail -f /var/log/messages 8773 pts/0 R+ 0:00 grep tail # ls -l /proc/7196/cwd lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte # ls -l /proc/7196/fd total 0 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4 lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages
ご覧のとおり、/proc/$PID
ディレクトリには、プロセスの CWD をリンクする「cwd」というシンボリック リンクが含まれています。 /proc/$PID/fd
にリストされているオープン ファイル記述子についても同様です。 .
/proc/$PID
階層には、実行中のすべてのプロセスに関する豊富な情報が含まれています。覗いてみる価値あり!
解決策 2:
コマンド lsof がある場合 利用可能な [ほとんどの *nix フレーバーが行うもの] を使用します:
lsof -p NNN
プロセス NNN によって開かれているファイルを一覧表示します。しばらく BSD を使っていませんが、記憶から fuser lsof とよく似ています。
cwd を見つけるコマンドがわからない プロセスのですが、Linuxではcwdはプロセスの/ procディレクトリにシンボリックリンクされています。 /proc/NNN/cwd.
解決策 3:
プロセスの PID がわかっている場合は、
を発行できます。lsof | grep YOURPID
すばやく簡単に覚えられます。
または
lsof -c yourprogramexecutable
解決策 4:
システムにインストールされている場合は、lsof を試してください
D