현재 bash 세션에서 열려 있는 파일 설명자(및 참조하는 파일)를 나열하는 방법

현재 bash 세션에서 열려 있는 파일 설명자(및 참조하는 파일)를 나열하는 방법

대화형 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/*

답변4

그래픽 솔루션이 필요한 경우 gnome-system-monitor프로세스에서 열린 파일 설명자를 볼 수 있습니다. 프로세스를 마우스 오른쪽 버튼으로 클릭하면 을 클릭할 수 있는 상황에 맞는 메뉴가 열립니다 Open Files. 또는 프로세스를 선택하고 CTRL+를 누를 수도 있습니다 O.

보너스: 샌드위치 메뉴에는 열려 있는 파일을 파일 이름으로 검색할 수 있는 옵션도 있습니다.

시스템 모니터 스크린샷

관련 정보