[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 |
특정 프로세스 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> |
도움말 출력 |
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
...