はい、これにより、開いているすべてのファイル記述子が一覧表示されます:
$ ls -la /proc/$$/fd
total 0
dr-x------ 2 isaac isaac 0 Dec 28 00:56 .
dr-xr-xr-x 9 isaac isaac 0 Dec 28 00:56 ..
lrwx------ 1 isaac isaac 64 Dec 28 00:56 0 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 1 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 2 -> /dev/pts/6
lrwx------ 1 isaac isaac 64 Dec 28 00:56 255 -> /dev/pts/6
l-wx------ 1 isaac isaac 64 Dec 28 00:56 4 -> /home/isaac/testfile.txt
もちろん、いつものように:0 は stdin、1 は stdout、2 は stderr です。
この場合、4 番目は開いているファイル (書き込むため) です。
任意の端末に接続されているファイル記述子をリストしたい場合、 lsof
を使用できます /fuser
または似たようなもの:
$ lsof -p $$ 2>/dev/null | awk '$NF ~ /\/pts\//'
bash 32406 foobar 0u CHR 136,31 0t0 34 /dev/pts/31
bash 32406 foobar 1u CHR 136,31 0t0 34 /dev/pts/31
bash 32406 foobar 2u CHR 136,31 0t0 34 /dev/pts/31
bash 32406 foobar 3u CHR 136,31 0t0 34 /dev/pts/31
bash 32406 foobar 255u CHR 136,31 0t0 34 /dev/pts/31
これらのツールは基本的に /proc
を解析します 、だから /proc/$$/fd/
にアクセスするだけです 例:
ls /proc/$$/fd/*
lsof -a -p $$
ネットワーク fd のみ:
lsof -i -a -p $$