Skip to content

Lsof

linux 시스템에서 프로세스를 통하여 파일을 열 수 있습니다. 여기서 파일이란 데이터를 담을 수 있는 파일 뿐만 아니라, 통신을 위한 socket, event_poll 등 file descriptor, 라이브러리 파일, char device까지 포함합니다. 개발된 프로그램이 소켓을 사용하여 통신하는 경우 실제로 소켓이 열려 있는지 디버깅을 위한 용도, 그리고 프로세스가 열 수 있는 파일의 갯수가 한정되어지기 때문에 시스템 모니터링을 위해서 열려진 파일이 얼마만큼인지 확인하는 용도등으로 파일을 확인하는 방법은 필요합니다. 결론부터 말하자면, lsof(list open file)라는 명령어를 통하여 모든 프로세스에 대하여 열고 있는 파일에 대하여 확인할 수 있습니다.

How to install

$ sudo yum install lsof

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);
  • TYPE: 파일 종류
    • DIR: 디렉터리
    • CHR: character special file
    • REG: regular file
    • unix: 유닉스 도메인 소켓 (MySQL 등이 사용하는 소켓으로 로컬 프로세스에서만 사용 가능하며 TCP/UDP 보다 속도가 매우 빠름)
  • DEVICE : 장치 번호
  • SIZE/OFF: 파일의 크기나 오프셋
  • NODE: 노드 번호
  • NAME: 파일명
$ 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

Favorite site