대화형 bash 세션을 실행 중입니다. exec를 사용하여 일부 파일 설명자를 만들었고 bash 세션의 현재 상태를 나열하고 싶습니다.
현재 열려 있는 파일 설명자를 나열하는 방법이 있습니까?
답변1
예, 열려 있는 모든 파일 설명자가 나열됩니다.
$ ls -l /proc/$$/fd
total 0
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입니다.
이 경우 네 번째 파일은 (쓰기용으로) 열려 있는 파일입니다.
답변2
lsof -a -p $$
네트워크 FD에만 해당:
lsof -i -a -p $$
답변3
터미널에 연결된 파일 설명자를 나열하고 싶다면 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/*