본문 바로가기

OS,Network,Container

리눅스 lsof 명령어

반응형

[ lsof ]

-> lisf open files의 약자로, 열려진 파일들을 보는 명령어이다.
-> 시스템에서 동작하고 있는 모든 프로세스에 의해 열려진 파일들에 대한 정보를 보여주는 시스템 관리 명령어.
-> 일반유저의 접근을 허용하지 않도록 Permission을 700이나 100으로 변경하는 것이 보안상 좋다.
 
 

[0] 설치

만약 lsof 명령어를 설치하지 않았다면 yum -y install lsof 명령어를 통해 설치해주어야 사용할 수 있다.
 
[root@localhost ~]# lsof
bash: lsof: command not found

[root@localhost ~]# yum -y install lsof
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirror.kakao.com
* extras: mirror.kakao.com
* updates: mirror.kakao.com
base                                                                | 3.6 kB  00:00:00
..
..
  Verifying  : lsof-4.87-6.el7.x86_64                                                  1/1

Installed:
  lsof.x86_64 0:4.87-6.el7

Complete!
 
 

[1] lsof 맛보기

 
칼럼 필드로는 COMMAND, PID, TID, USER, FD, TYPE, DEVICE, SIZE/OFF, NODE, NAME 이 있다.
참고로 단순 lsof만 치게된다면 터미널상에서의 출력이 엄청 길다.
 
[root@localhost ~]# lsof
COMMAND     PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1         root  cwd       DIR              253,0      4096          2 /
systemd       1         root  rtd       DIR              253,0      4096          2 /
systemd       1         root  txt       REG              253,0   1624512     397095 /usr/lib/systemd/systemd
systemd       1         root  mem       REG              253,0     20064     393646 /usr/lib64/libuuid.so.1.3.0
systemd       1         root  mem       REG              253,0    265600     395154 /usr/lib64/libblkid.so.1.1.0
systemd       1         root  mem       REG              253,0     90248     393631 /usr/lib64/libz.so.1.2.7
systemd       1         root  mem       REG              253,0    157424     393643 /usr/lib64/liblzma.so.5.2.2
..
..
 
 
[2] 칼럼 필드 정보
칼럼 필드 정보
COMMAND
실행한 명령어
PID
Process ID
USER
실행한 User
FD
File Descriptor
[cwd] : current working directory
[rtd]   : root directory
[txt]    : program text
[mem]: memory-mapped file
TYPE
DIR  : Directory
REG : Regular file
CHR : Character special file
unix : unix domain socket
DEVICE
device number
SIZE/OFF
파일의 크기 or Offset
NODE
Node Number
NAME
File Name
 
 
[3] 명령어 옵션
명령어 옵션
-i
설정한 네트워크 소켓에 대한 정보를 출력하며 프로토콜, 서비스, 호스트 및 IP에 대해 출력한다.
[4, 6] : IPv4 혹은 IPv6만을 출력하고 싶을 때 사용.
[@hostname, @ip addr] : 접속하는 Host나 IP에 대한 정보를 검색하며 IP 버전과 구분하기 위해 IFS값으로 '@'을 사용한다.
[ :service port ] : /etc/services에 등록되어 있는 서비스이름을 지정하거나 포트 번호를 직접 입력하여 출력할 수 있다.
-u
사용자 ID or UID 값으로 지정할 수 있다.
다수의 사용자를 설정할 땐 ',' (컴마)로 구분할 수 있다.
특정 사용자를 제외한 정보를 출력하고 싶다면 '^사용자' 로 설정할 수 있다.
-c
특정한 명령어나 프로그램이 참조하고 있는 파일들의 목록을 출력하고자 할 때 쓰임
-P
/etc/services에 등록되어 있는 이름 대신 Port Number로 출력한다.
-r
recursive의 약자로 지속적인 출력을 할 때 지정한 초만큼의 주기로 실행하여 출력
-N
NFS 서버가 구축된 환경에서 NFS로 연결되어 있는 파일들에 대한 정보를 출력한다.
+D
특정 디렉터리 내의 하위 디렉터리까지 존재하는 파일을 사용하고 있는 프로세스의 목록 출력
 
 
[4] lsof 명령어 예시
 
lsof /var/log/messages
특정 디렉터리 또는 파일을 엑세스 하고 있는 프로세스 확인
 
 

 

 
 
lsof +D /var/log
+D 옵션을 사용하면 하위 디렉터리에 있는 파일들을 실행하고 있는 프로세스까지 출력함.
 
 
 
 
lsof -i 4        lsof -i 6
ipv4, ipv6
인터넷 연결 소켓에 대한 프로세스 목록을 출력함.
 
 
 
 
 
 
lsof -c firewalld
특정 데몬과 연결되어 있는 프로세스 파일 정보
필자는 firewalld ( 방화벽) 데몬을 해봄
 
 
 
 
 
 
 
Ref
반응형