/
linux fuser 사용법 - 파일이나 socket 을 어떤 프로세스가 사용중인지 확인

linux fuser 사용법 - 파일이나 socket 을 어떤 프로세스가 사용중인지 확인


fuser 는 파일이나 소켓을 어떤 프로세스가 사용하는 지 알려주는 명령어입니다.


umount 를 하려는 데 "device is busy" 같은 에러 메시지가 난다면 특정 프로세스가 umount 하려는 파티션의 파일을 사용하고 있어서입니다.


fuser 는 이런 경우 해당 파티션의 파일을 사용하는 프로세스를 찾는 데 유용하게 사용할 수 있습니다.


fuser 대신 lsof 를 사용해도 됩니다.


fuser 를 옵션없이 파일이나 디렉터리만 전달하면 해당 리소스를 사용하는 프로세스 ID 를 출력합니다.

$ sudo fuser /var/lib/mysql/mysql.sock      
    
/var/lib/mysql/mysql.sock    : 20309

뒤에 보이는 20309 는 mysql.sock 을 사용하는 프로세스 ID 입니다.


-v, --verbose 를 붙이면 더 자세한 프로세스 정보를 출력합니다.

$ sudo fuser -v /var/lib/mysql/mysql.sock
                     USER        PID ACCESS COMMAND
/var/lib/mysql/mysql.sock:
                     mysql     20309 F.... mysqld

lsof 를 사용해도 원하는 결과를 얻을 수 있습니다.

$ sudo lsof /var/lib/mysql/mysql.sock      
    
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
mysqld  20309 mysql   26u  unix 0xffff88803f457400      0t0 206420644 /var/lib/mysql/mysql.sock



namespace 사용

-n, --namespace 옵션을 사용하면 네임스페이스(file, udp, tcp) 안에서 프로세스를 찾게 됩니다.  다음은 MySql 의 기본 포트인 3306 을 사용하는 프로세스를 찾는 명령입니다.

$ sudo fuser -n tcp 3306
3306/tcp:            20309


80 과 443 포트를 사용하는 프로세스를 찾으려면 포트를 모두 기술해 줍니다.

$ sudo fuser -n tcp 80 443 

80/tcp:               3268  3269  3270  3271  3272
443/tcp:              3268  3269  3270  3271  3272


프로세스의 정보를 더 자세히 알고 싶으면 -v 옵션을 추가합니다.

$ sudo fuser -n tcp -v 80 443
                     USER        PID ACCESS COMMAND
80/tcp:              root       3268 F.... nginx
                     nginx      3269 F.... nginx
                     nginx      3270 F.... nginx
                     nginx      3271 F.... nginx
                     nginx      3272 F.... nginx
443/tcp:             root       3268 F.... nginx
                     nginx      3269 F.... nginx
                     nginx      3270 F.... nginx
                     nginx      3271 F.... nginx
                     nginx      3272 F.... nginx


mount 파일 시스템 사용 프로세스 찾기

-m, --mount 옵션을 사용하면 특정 파일 시스템을 사용하는 모든 프로세스를 찾아 줍니다. 예로 다음 명령어는 /var 를 사용하는 모든 프로세스의 정보를 표시합니다.

-m 옵션은 umount 하려는 데 "device is busy" 에러가 날 때 해당 파일 시스템을 사용하는 프로세스를 찾을 때 매우 유용합니다.

$ sudo fuser -v -m /var/

kill signal 보내기

-k,–kill 옵션을 사용하면 특정 파일이나 디렉터리를 사용하는 모든 프로세스에게 SIGKILL 을 전송할 수 있습니다. 예로 다음 명령어는 /var 를 사용하는 모든 프로세스에게 KILL signal 을 전송합니다.

$ sudo fuser -v -k /var/


같이 보기


Related content

리눅스에서 프로세스 이름으로 프로세스 id 확인
리눅스에서 프로세스 이름으로 프로세스 id 확인
More like this
lsof 사용법
lsof 사용법
More like this
커널의 log 를 출력하는 dmesg 명령어 사용법
커널의 log 를 출력하는 dmesg 명령어 사용법
More like this
파일 유형(file type)을 알려주는 linux file 명령어 사용법
파일 유형(file type)을 알려주는 linux file 명령어 사용법
More like this
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
설정 파일 변경 사항을 반영하는 linux source 명령어 사용법
More like this
리눅스 시스템 모니터링의 종합 세트 - linux dstat 명령어 사용법
리눅스 시스템 모니터링의 종합 세트 - linux dstat 명령어 사용법
More like this