lsof 사용법 운영
2006.10.27 15:48 Edit
■ LSOF 옵션
옵션 | 기 능 | 옵션 | 기 능 |
-? | list help | -a | AND selections (OR) |
-d | s select by FD set | +|-f | -files +filesys |
-l | list UID numbers | -n | no host names |
-s | list file size | -t | terse listing |
-v | display version info | -F [f] | select fields;-F? for help |
-o o | o 0t offset digits (8) | -S [t] | t second stat timeout(15) |
-i i | select by IPv4 address: [proto][@host|addr][:svc_list|port_list] | +|-r [t] | repeat every t seconds (15); |
-b | avoid kernel blocks | -c c | list command c |
-P | no port names | -i | select IPv4 files |
-p s | select by PID set | -C | no kernel name cache |
+|-w | Warnings (+) | -R | list paRent PID |
-k k | kernelsymbols (/dev/ksyms) | -U | select Unix socket |
-u s | exclude(^)/select login/UID s | -m m | kernel memory (/dev/kmem) |
+|-M | portMap registration (-) | -- | end option scan |
-g [s] | select by process group ID set and print process group IDs | ||
names | select named files or files on named file systems | ||
■ 실행결과 보기
실행결과에 해당되는 각 column 들을 간단하게 살펴보면 다음 [표5] 와 같다.
Column | 설 명 |
Command | 프로세스와 관련된 Unix command 이름 |
PID | Process IDentification number |
Parent Process IDentification number | |
Process Group IDentification number | |
USER | 해당 프로세스를 소유한 사용자 ID 또는 login name |
FD | File Descriptor number |
TYPE | 해당 파일과 관련한 노드 타입 |
DEVICE | device number |
SIZE | file 이나 file offset의 사이즈 |
INODE | local file 의 node number 또는 Internet protocol type |
NAME | 해당 파일이 소속된 mount point나 파일 시스템의 이름 |
■ LSOF 주요 옵션 사용 예
* 특정 파일을 억세스하고 있는 프로세스 확인 : lsof <path/file-name>
[cert:root]:/> lsof /etc/passwd
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
ns-httpd 244 root 9r VREG 32,0 3044 99217 /etc/passwd
....
* internet socket 확인 : lsof -i
Internet address 출력형식 : [protocol][@hostname|hostaddr][:service|port]
- 특정 호스트(또는 ip)에 대한 접속 확인
[cert:root]:/> lsof -i@172.16.2.146
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
in.telnet 10124 root 0u inet 0x61d4b788 0t71 TCP cert:telnet->172.16.2.146:1109 (ESTABLISHED)
in.telnet 10124 root 1u inet 0x61d4b788 0t71 TCP cert:telnet->172.16.2.146:1109 (ESTABLISHED)
in.telnet 10124 root 2u inet 0x61d4b788 0t71 TCP cert:telnet->172.16.2.146:1109 (ESTABLISHED)
.....
- 특정 포트로 접속한 리스트 확인
[cert:root]:/usr/sbin> lsof -i @certcc.or.kr:23
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
in.telnet 104 root 2u inet 0x612df850 0t152 TCP cert:telnet->172.16.2.159:1176 (ESTABLISHED)
in.telnet 28462 root 0u inet 0x61aee578 0t71 TCP cert:telnet->172.16.2.146:4250 (ESTABLISHED)
.....
* 특정 user가 오픈한 프로세스를 확인 : lsof -u <loginname> 혹은 lsof -u <UID>
[cert:root]:/> lsof -u kong
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
csh 21309 kong cwd VDIR 32,4 1536 223602 /user/kong/lsof_4.56
csh 21309 kong txt VREG 32,6 158608 298136 /usr/bin/csh
.......
- 특정사용자 제외시 "^" 심볼을 사용하고, 여러명을 동시에 지정하려면 ","를 이용한다.
[cert:root]:/dev/pts> lsof -u ^root,kong,yjkim
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
csh 8992 yjkim cwd VDIR 32,0 1024 2 /
csh 8992 yjkim txt VREG 32,6 158608 298136 /usr/bin/csh
csh 8992 yjkim txt VREG 32,6 70996 136979 /usr/lib/locale/ko/ko.so.1
csh 8992 yjkim txt VREG 32,6 1024888 6749 /usr/lib/libc.so.1
.....
csh 21309 kong cwd VDIR 32,4 1536 223602 /user/kong/lsof_4.56
csh 21309 kong txt VREG 32,6 158608 298136 /usr/bin/csh
....
* 특정 프로세스가 오픈한 파일 리스트 확인 : lsof -p <PID>
- PID 112를 가진 프로세스가 사용하는 파일들 확인
[cert:root]:/usr/sbin> lsof -p 143
COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
inetd 143 root cwd VDIR 32,0 1024 2 /
inetd 143 root txt VREG 32,6 33492 310933 /usr/sbin/inetd
inetd 143 root txt VREG 32,6 10696 6352 /usr (/dev/dsk/c0t0d0s6)
....
....
inetd 143 root 4u inet 0x603cab38 0t0 TCP *:ftp (LISTEN)
inetd 143 root 5u inet 0x610b13c0 0t0 TCP *:telnet (LISTEN)
inetd 143 root 6u inet 0x610b1240 0t0 TCP *:pop3 (LISTEN)
......
* ps 명령이 변조된 시스템에서는 의심스러운 포트 확인하기 예
[root@linux /root]# netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:login *:* LISTEN
tcp 0 0 *:2626 *:* LISTEN
.......
[root@linux /dev]# fuser -n tcp 2626
2626/tcp: 607
[root@linux /dev]# lsof -p 607
PID TTY STAT TIME COMMAND
607 ? S 0:00 /usr/sbin/mingetty
LSOF 주요 사용 예
- 특정 파일을 억세스하고 있는 프로세스 확인 : lsof <path/file-name>
- internet socket 확인 : lsof -i
- 해당 포트(8080)를 사용하는 프로세스 확인 : lsof -i | grep 8080
- 특정 호스트(또는 ip)에 대한 접속 확인 : lsof -i @1.2.3.4
- 특정 포트로 접속한 리스트 확인 : lsof -i @certcc.or.kr:23
- 특정 user가 오픈한 프로세스를 확인 : lsof -u <loginname> 혹은 lsof -u <UID>
- 특정사용자 제외시 "^" 심볼을 사용하고, 여러명을 동시에 지정하려면 "," 이용
- 특정 프로세스가 오픈한 파일 리스트 확인 : lsof -p <PID>
※ 참고자료
1. lsof 4.56 README file and man page
2. Installing, configuring and using lsof 4.50 to list open files on systems running Solaris 2.x
http://www.cert.org/security-improvement/implementations/i042.05.html
- [2010/07/19] 증강현실 앱 세계 1위 '레이어' 창업자 마틴 렌스-피츠제럴드 (위클리비즈) (328, 1) *1
- [2010/07/19] 아이폰용 앱업체 1위 '태퓰러스' 바트 데크렘 인터뷰 (위클리비즈) (231)
- [2010/07/13] 할일관리/시간관리 – ZTD의 열가지 습관 (174)
- [2009/03/16] 온라인 행사관리 서비스 “온오프 믹스(ONOFF MIX)” (50) *2
- [2010/06/28] [Weekly Biz] 1시간 강연료 '10만달러 사나이' 게리 해멀 교수 紙上특강 - "기업의 DNA를 바꿔라" 기강 효율 통제→실험 혁신 창조 (256)











