[Linux] lsof 명령어: 실행 중 파일 정보 출력
ℹ️이 콘텐츠에는 광고가 포함되어,판매 발생 시 수익이 발생합니다.(네이버 쇼핑 커넥트, 아마존 어필리에이트, 애드센스 등)lsof 명령어는 lisf open files의 약자로 리눅스 시스템에서 열려 있는 파일의 정보를 출력해 주는 명령어입니다.
lsof 명령어는 파일을 포함하여 디렉터리, 네트워크 소켓, 파이프 등 프로세스가 사용 중인 다양한 리소스도 조회할 수 있습니다.
✅ lsof 명령어 기본 구문
lsof [옵션] [파일 또는 프로세스]명령어만 입력 했을 때는 현재 시스템에서 열린 모든 파일과 관련된 프로세스 정보를 출력합니다.
| 
 COMMAND 36680_fc0b12-26> | 
 PID 36680_c6ef41-9e> | 
 TID 36680_59ee3a-2a> | 
 TASKCMD 36680_36ddaa-a9> | 
 USER 36680_aafad8-74> | 
|---|---|---|---|---|
| 
 프로세스 이름 36680_6c550a-73> | 
 프로세스 ID 36680_ff3428-89> | 
 스레드 ID 36680_cb997b-4a> | 
 스레드명 또는 작업명 36680_8d1973-82> | 
 실행 사용자 36680_7d28b0-c5> | 
| 
 FD 36680_ff7e86-d0> | 
 TYPE 36680_6b1657-1e> | 
 DEVICE 36680_f864e1-f7> | 
 SIZE/OFF 36680_5d4cac-d3> | 
 NODE 36680_c271c2-45> | 
 NAME 36680_8a7b42-a1> | 
|---|---|---|---|---|---|
| 
 파일 디스크립터 및 접근 타입 36680_5cacf8-88> | 
 파일 타입 36680_7fa224-f2> | 
 장치 번호 36680_55558a-60> | 
 파일 크기 또는 오프셋 36680_9d0bef-3a> | 
 inode 번호 36680_273d9d-9e> | 
 파일 이름/경로 36680_dd4848-bf> | 
✅ lsof 명령어 옵션
| 
 옵션 36680_fa9089-72> | 
 설명 36680_95e3af-bc> | 
 예시 36680_b52757-4a> | 
|---|---|---|
| 
 -u 36680_bb6d1a-b3> | 
 특정 사용자(user)의 열린 파일 조회 36680_6ca9c0-5e> | 
 lsof -u username 36680_761239-ee> | 
| 
 -p 36680_d68a85-5c> | 
 특정 프로세스 ID(pid)의 열린 파일 조회 36680_c80988-86> | 
 lsof -p 1234 36680_ad0580-76> | 
| 
 -P 36680_f04d20-2c> | 
 특정 프로세스 ID(pid)의 열린 파일 조회 36680_7a739b-24> | 
 lsof -p 1234 36680_975b5f-eb> | 
| 
 -c 36680_4059b6-67> | 
 특정 명령어 이름(command)로 필터링 36680_4d8cbe-80> | 
 lsof -c sshd 36680_a3d020-4f> | 
| 
 -i 36680_ad6374-1c> | 
 네트워크 파일(소켓) 관련 열린 파일 포트로 조회 36680_3f7a04-5f> | 
 lsof -i :80 36680_4472b1-3f> | 
| 
 -n 36680_9f4994-e6> | 
 네트워크 주소를 숫자 형태로 표시 36680_6838f3-bb> | 
 lsof -i -n 36680_6cdcbc-e6> | 
| 
 -r 36680_1ddd94-83> | 
 주기적으로 반복 실행 (초 단위) 36680_346432-ed> | 
 lsof -i -r 5 (5초마다 갱신) 36680_f19a39-83> | 
| 
 -t 36680_9e69d0-0e> | 
 PID만 출력 (스크립트 용도) 36680_3fb20b-44> | 
 lsof -t -i :22 36680_e26e66-7f> | 
| 
 +D 36680_e1a262-6b> | 
 특정 디렉터리 내 파일만 조회 36680_f6f0d8-67> | 
 lsof +D /var/log 36680_ecff49-e7> | 
| 
 +L1 36680_b316d9-92> | 
 링크 수가 1 이하인 파일만 조회 36680_e98b55-da> | 
 lsof +L1 36680_b1e5c0-c4> | 
| 
 -s 36680_8ffe50-5a> | 
 파일 크기 정보 출력 36680_656483-00> | 
 lsof -s 36680_380c6f-11> | 
| 
 -h 36680_f2b684-c9> | 
 도움말 출력 36680_8aa2b7-40> | 
 lsof -h 36680_40ee9f-2d> | 
✅ lsof 명령어 사용 예시
🔲 특정 사용자 확인: -u
 ~]# lsof -u testuser
COMMAND    PID  USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
php-fpm 301168 testuser  cwd    DIR              259,4     4096  55631296 /home/testuser/www
php-fpm 301168 testuser  rtd    DIR              259,4     4096       128 /
php-fpm 301168 testuser  txt    REG              259,4  8485752   3153819 /usr/sbin/php-fpm
php-fpm 301168 testuser  mem    REG              259,4  1714000   1058023 /usr/lib64/libp11-kit.so.0.3.1
php-fpm 301168 testuser  mem    REG              259,4   353416   1311465 /usr/lib64/libnss_systemd.so.2
...
 ~]# lsof -u mysql
COMMAND  PID  USER   FD   TYPE             DEVICE   SIZE/OFF      NODE NAME
mariadbd 810 mysql  cwd    DIR              259,4       4096   1106122 /var/lib/mysql
mariadbd 810 mysql  rtd    DIR              259,4       4096       128 /
mariadbd 810 mysql  txt    REG              259,4   27406208   2142502 /usr/sbin/mariadbd
mariadbd 810 mysql  DEL    REG               0,17                21610 /[aio]
mariadbd 810 mysql  mem    REG              259,4    2387008   1078242 /usr/lib64/libc.so.6
...🔲 특정 포트로 열려 있는 네트워크 조회: -i
~]# lsof -i :80
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd      628   root    4u  IPv6  21015      0t0  TCP *:http (LISTEN)
httpd   308004 nobody    4u  IPv6  21015      0t0  TCP *:http (LISTEN)
httpd   308118 nobody    4u  IPv6  21015      0t0  TCP *:http (LISTEN)
httpd   308237 nobody    4u  IPv6  21015      0t0  TCP *:http (LISTEN)◻️ 모든 네트워크 조회: -i
 ~]# lsof -i | wc -l
27
 ~]# lsof -i | head
COMMAND      PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
chronyd      597   chrony    5u  IPv4   16123      0t0  UDP localhost:323 
chronyd      597   chrony    6u  IPv6   16124      0t0  UDP localhost:323 
NetworkMa    620     root   26u  IPv4   20914      0t0  UDP ip-172-26-14-231.ap-northeast-2.compute.internal:bootpc->ip-172-26-0-1.ap-northeast-2.compute.internal:bootps 
NetworkMa    620     root   28u  IPv6   22720      0t0  UDP ip-172-26-14-231.ap-northeast-2.compute.internal:dhcpv6-client 
httpd        628     root    4u  IPv6   21015      0t0  TCP *:http (LISTEN)
httpd        628     root    6u  IPv6   21025      0t0  TCP *:https (LISTEN)
mariadbd     810    mysql   21u  IPv4   21191      0t0  TCP *:mysql (LISTEN)
redis-ser   1184    redis    6u  IPv4   23649      0t0  TCP localhost:redis (LISTEN)
redis-ser   1184    redis    7u  IPv6   23650      0t0  TCP localhost:redis (LISTEN)◻️IPv4 & IPv6 네트워크 조회: -i
| 
 입력 36680_01b4ee-16> | 
 의미 36680_d8d297-be> | 
|---|---|
| 
 -i 4 36680_b24225-6d> | 
 IPv4 네트워크 소켓만 표시 36680_32bf8f-39> | 
| 
 -i 6 36680_af79b6-a7> | 
 IPv6 네트워크 소켓만 표시 36680_48effe-49> | 
🔲 명령어로 열려 있는 파일: -c
 ~]# lsof -c httpd | grep sbin
httpd      628   root  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   270410 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   308004 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   308118 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   308237 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd ~]# lsof -c mariadb | head
COMMAND  PID  USER   FD   TYPE             DEVICE   SIZE/OFF      NODE NAME
mariadbd 810 mysql  cwd    DIR              259,4       4096   1106122 /var/lib/mysql
mariadbd 810 mysql  rtd    DIR              259,4       4096       128 /
mariadbd 810 mysql  txt    REG              259,4   27406208   2142502 /usr/sbin/mariadbd
...🔲 특정 프로세스 ID(PID) 확인: -p
 ~]# lsof -p 810 | head
COMMAND  PID  USER   FD   TYPE             DEVICE   SIZE/OFF      NODE NAME
mariadbd 810 mysql  cwd    DIR              259,4       4096   1106122 /var/lib/mysql
mariadbd 810 mysql  rtd    DIR              259,4       4096       128 /
mariadbd 810 mysql  txt    REG              259,4   27406208   2142502 /usr/sbin/mariadbd
mariadbd 810 mysql  DEL    REG               0,17                21610 /[aio]
...◻️ 프로세스 그룹(PGID)에 속한 파일 확인: -g
  ~]# lsof -p 308237 | head
COMMAND    PID   USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
httpd   308237 nobody  cwd       DIR              259,4     4096      128 /
httpd   308237 nobody  rtd       DIR              259,4     4096      128 /
httpd   308237 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   308237 nobody  mem       REG              259,4    44784  1066605 /usr/lib64/libffi.so.8.1.0
...🔲 httpd 실행 프로세스 찾기
 ~]# lsof -c httpd | grep bin
httpd      628   root  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   270410 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
httpd   308004 nobody  txt       REG              259,4   585848  2142479 /usr/sbin/httpd
...
 ~]# lsof -c httpd | grep log
httpd      628   root  mem       REG              259,4    15696 49284538 /usr/lib64/httpd/modules/mod_logio.so
httpd      628   root  mem       REG              259,4    36712 49284535 /usr/lib64/httpd/modules/mod_log_config.so
httpd      628   root    2w      REG              259,4  7056399 60819881 /var/log/httpd/error_log
...