소개
fuser
명령은 주어진 파일, 디렉토리 또는 소켓을 사용하는 프로세스를 찾기 위해 설계된 Linux 유틸리티입니다. 또한 해당 프로세스를 실행하는 사용자, 그리고 액세스 유형에 대한 정보를 제공합니다.
fuser 유틸리티 사용 방법
fuser
의 모든 옵션에 대한 개요를 얻으려면 fuser
매뉴얼 페이지를 확인할 수 있습니다. 또한 fuser
구문의 개요를 얻으려면 어떤 옵션 없이 fuser
를 실행할 수도 있습니다:
- fuser
OutputNo process specification given
Usage: fuser [-fMuv] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.
-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
- reset options
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]
디렉토리에서 실행 중인 프로세스 보기
fuser
는 -v 옵션과 함께 사용될 수도 있으며, 이는 도구를 자세한 모드로 실행합니다. 자세한 옵션은 사용자가 fuser
가 무엇을 하는지 관찰할 수 있도록 더 많은 출력을 생성하는 데 사용됩니다. 현재 디렉토리, .
,에서 -v
옵션을 포함하여 fuser
를 실행합니다:
- fuser -v .
Output USER PID ACCESS COMMAND
/home/sammy: sammy 17604 ..c.. bash
이 경우에는 현재 디렉토리에서 실행되고 있는 유일한 프로세스는 현재 명령을 실행 중인 대화형 bash
셸입니다.
자세한 모드에서 실행되면 fuser
유틸리티는 프로세스의 USER
, PID
, ACCESS
, 및 COMMAND
에 대한 정보를 제공합니다. ACCESS
아래의 c
문자는 현재 디렉토리를 나타내는 경우입니다. 다른 액세스 유형도 있습니다. 예를 들어 실행 중인 executable, root 디렉토리, 열린 file, 및 mapped 파일 또는 공유 라이브러리입니다.
네트워크 소켓 사용하는 프로세스 찾는 방법
TCP 및 UDP 소켓을 사용하는 프로세스를 찾아야 할 수도 있습니다. 이 예제를 시연하기 위해 먼저 nc
를 사용하여 포트 8002에서 TCP 리스너를 만들어 실행 중인 프로세스를 관찰할 수 있도록 하겠습니다:
- nc -l -p 8002
이것은 실행 중인 동안 터미널을 차단합니다. 다른 터미널 창에서 fuser
를 사용하여 -n
옵션을 사용하여 TCP 포트 8002에서 실행 중인 프로세스를 찾습니다:
- fuser -v -n tcp 8002
Output USER PID ACCESS COMMAND
8002/tcp: sammy 17985 F.... nc
참고: 기본적으로 fuser
도구는 IPv4 및 IPv6 소켓을 모두 확인하지만 -4
및 -6
옵션을 사용하여 각각 IPv4 또는 IPv6 연결만 확인할 수 있습니다.
이 출력은 netcat을 사용하는 프로세스의 프로세스 ID(PID)가 17985이고 그것을 실행하는 데 사용된 명령어는 ‘nc’임을 보여줍니다. 프로세스 ID(PID)는 실행 중인 프로세스를 중지하거나 종료하는 데 사용될 수 있습니다. 리눅스에서 프로세스 관리를 하는 방법은 ps, kill, and nice를 사용하여 프로세스 관리하는 방법을 읽음으로써 더 자세히 알아볼 수 있습니다. 특정 포트에서 실행 중인 프로세스를 중지시키기 위해 -k
플래그를 사용하여 fuser
자체를 사용할 수도 있습니다:
- fuser -k 8002/tcp
Output8002/tcp: 18056
첫 번째 터미널 창으로 다시 이동하면 nc
프로그램이 종료되어 셸로 돌아간 것을 알 수 있습니다.
fuser 유틸리티는 프로세스에 특정 신호를 보낼 때도 사용할 수 있습니다. -k 옵션을 사용하면 fuser 명령은 KILL 신호를 프로세스에 보냅니다. 특정 실행 중인 프로세스에 보낼 수 있는 다른 신호도 많이 있습니다. 이를 fuser -l
로 나열할 수 있습니다:
- fuser -l
OutputHUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
결론
이 문서에서는 리눅스 시스템에서 사용 중인 포트와 디렉터리를 모니터링하기 위한 fuser
의 몇 가지 사용 예를 알아보았습니다. 시스템에서 실행 중인 알 수 없는 프로세스를 이해하려고 할 때 fuser
는 특히 유용할 수 있습니다.
다음으로, netstat
및 du
를 사용하여 다른 서버 자원을 모니터링하는 방법을 배우실 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-fuser-command