Lsof
linux 시스템에서 프로세스를 통하여 파일을 열 수 있습니다. 여기서 파일이란 데이터를 담을 수 있는 파일 뿐만 아니라, 통신을 위한 socket, event_poll 등 file descriptor, 라이브러리 파일, char device까지 포함합니다. 개발된 프로그램이 소켓을 사용하여 통신하는 경우 실제로 소켓이 열려 있는지 디버깅을 위한 용도, 그리고 프로세스가 열 수 있는 파일의 갯수가 한정되어지기 때문에 시스템 모니터링을 위해서 열려진 파일이 얼마만큼인지 확인하는 용도등으로 파일을 확인하는 방법은 필요합니다. 결론부터 말하자면, lsof(list open file)라는 명령어를 통하여 모든 프로세스에 대하여 열고 있는 파일에 대하여 확인할 수 있습니다.
How to install
Examples
-
sudo lsof -i -P -n
- 내가 가장 자주 사용하는 명령. 오픈된 네트워크 포트 넘버 및 프로세스 출력
-
lsof -i TCP:22
- 특정 포트번호 지정
-
lsof -i
- TCP/UDP 모두 표시
-
lsof -i TCP
- TCP 만 표시
-
lsof -i UDP
- UDP만 표시
-
lsof -i 4
- IPv4 버전만 확인
-
lsof -i 6
- IPv6 버전만 확인
-
lsof -i TCP -P | grep java | grep LISTEN
-P
옵션을 사용하면 서비스 이름대신 포트 번호로 표시해 준다.
-
lsof -c httpd
-
-c
옵션으로 특정 명령어가 사용하는 포트 출력. - apache httpd 같은 경우 fork 하여 여러 개의 프로세스가 뜨게 된다.
-
-c
옵션과 httpd 를 주면 httpd 가 오픈한 파일 정보를 출력한다.
-
lsof +D /tmp
-
/tmp
디렉터리 밑에 열린 파일을 표시한다. - 특정 디렉터리 하위의 열린 파일을 표시하고 싶은 경우가 있다. 이 경우
+D
옵션 뒤에 디렉터리 경로를 명시하면 된다.
-
lsof /var/log/httpd/access_log
- 특정 파일을 사용하고 있는 프로세스의 자세한 정보를 볼 수 있다.
- 옵션 없이 파일의 경로를 지정하면 된다.
-
lsof -u $USER
-
-u
옵션으로 사용자를 지정할 수 있다.
-
lsof -t -u $USER
-
-t
옵션은 자세한 정보를 출력하지 않고 pid 정보만 출력한다. - 주로 kill 명령과 함께 사용된다.
-
lsof -p 123
- 특정 프로세스가 오픈한 파일만 표시한다.
-
-p
옵션뒤에 PID 를 주면 된다.
컬럼별 의미
- COMMAND : 실행한 명령어
- PID : process id
- USER : 실행한 사용자
- FD: File Descriptor, 파일의 종류.
- cwd: current working directory
- rtd: root directory
- mem : memory-mapped file
- txt: program text (code and data);
- DIR: 디렉터리
- CHR: character special file
- REG: regular file
- unix: 유닉스 도메인 소켓 (MySQL 등이 사용하는 소켓으로 로컬 프로세스에서만 사용 가능하며 TCP/UDP 보다 속도가 매우 빠름)
$ lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 150352 3932 /sbin/init
init 1 root mem REG 253,0 65928 784927 /lib64/libnss_files-2.12.so
init 1 root DEL REG 253,0 784911 /lib64/libc-2.12.so
init 1 root DEL REG 253,0 785325 /lib64/libgcc_s-4.4.7-20120601.so.1.#prelink#.YDRQV5
init 1 root DEL REG 253,0 784939 /lib64/librt-2.12.so
init 1 root DEL REG 253,0 784935 /lib64/libpthread-2.12.so.#prelink#.0jHMuJ
init 1 root DEL REG 253,0 785344 /lib64/libdbus-1.so.3.4.0.#prelink#.HCYJdq
init 1 root mem REG 253,0 39896 785047 /lib64/libnih-dbus.so.1.0.0
init 1 root mem REG 253,0 101920 785049 /lib64/libnih.so.1.0.0
init 1 root DEL REG 253,0 784904 /lib64/ld-2.12.so
init 1 root 0u CHR 1,3 0t0 4160 /dev/null
init 1 root 1u CHR 1,3 0t0 4160 /dev/null
init 1 root 2u CHR 1,3 0t0 4160 /dev/null
init 1 root 3r FIFO 0,8 0t0 8845 pipe
init 1 root 4w FIFO 0,8 0t0 8845 pipe
init 1 root 5r DIR 0,10 0 1 inotify
init 1 root 6r DIR 0,10 0 1 inotify
init 1 root 7u unix 0xffff880037504680 0t0 8846 socket
See also
- Handle (Process Utility)
- netstate
- kill
- ps
- Sloth - 맥에서 열린 모든 파일/디렉토리/소켓 등을 보여주는 앱