[Linux] lsof 명령어: 실행 중 파일 정보 출력
lsof 명령어는 lisf open files의 약자로 리눅스 시스템에서 열려 있는 파일의 정보를 출력해 주는 명령어입니다.
lsof 명령어는 파일을 포함하여 디렉터리, 네트워크 소켓, 파이프 등 프로세스가 사용 중인 다양한 리소스도 조회할 수 있습니다.
✅ lsof 명령어 기본 구문
lsof [옵션] [파일 또는 프로세스]명령어만 입력 했을 때는 현재 시스템에서 열린 모든 파일과 관련된 프로세스 정보를 출력합니다.
|
COMMAND |
PID |
TID |
TASKCMD |
USER |
|---|---|---|---|---|
|
프로세스 이름 |
프로세스 ID |
스레드 ID |
스레드명 또는 작업명 |
실행 사용자 |
|
FD |
TYPE |
DEVICE |
SIZE/OFF |
NODE |
NAME |
|---|---|---|---|---|---|
|
파일 디스크립터 및 접근 타입 |
파일 타입 |
장치 번호 |
파일 크기 또는 오프셋 |
inode 번호 |
파일 이름/경로 |
✅ lsof 명령어 옵션
|
옵션 |
설명 |
예시 |
|---|---|---|
|
-u |
특정 사용자(user)의 열린 파일 조회 |
lsof -u username |
|
-p |
특정 프로세스 ID(pid)의 열린 파일 조회 |
lsof -p 1234 |
|
-P |
특정 프로세스 ID(pid)의 열린 파일 조회 |
lsof -p 1234 |
|
-c |
특정 명령어 이름(command)로 필터링 |
lsof -c sshd |
|
-i |
네트워크 파일(소켓) 관련 열린 파일 포트로 조회 |
lsof -i :80 |
|
-n |
네트워크 주소를 숫자 형태로 표시 |
lsof -i -n |
|
-r |
주기적으로 반복 실행 (초 단위) |
lsof -i -r 5 (5초마다 갱신) |
|
-t |
PID만 출력 (스크립트 용도) |
lsof -t -i :22 |
|
+D |
특정 디렉터리 내 파일만 조회 |
lsof +D /var/log |
|
+L1 |
링크 수가 1 이하인 파일만 조회 |
lsof +L1 |
|
-s |
파일 크기 정보 출력 |
lsof -s |
|
-h |
도움말 출력 |
lsof -h |
✅ 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
|
입력 |
의미 |
|---|---|
|
-i 4 |
IPv4 네트워크 소켓만 표시 |
|
-i 6 |
IPv6 네트워크 소켓만 표시 |
🔲 명령어로 열려 있는 파일: -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
...