강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

지정한 파일을 누가 사용하고 있는가? 확인하기(fuser)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

지정한 파일을 누가 사용하고 있는가? 확인하기(fuser)

 

 

 

 

 

리눅스 시스템관리를 하다보면 특정파일을 어떤프로세스에서 사용하고 있는지 확인해야할 필요성이 있다.

 

 

 

 이때 사용하는 유용한 도구가 fuser이다.

 

 

 

 쉽게 기억하려면 “file user”의 약어로 이해하면 좋을 듯하다.

 

 

 

  fuser는 지정된 파일이 사용되고 있는 프로세스 ID, PID를 확인하는 명령어이다.

 

 

 

 단순히 PID만을 출력하는 것 외에도 지정된 파일과 관련된 프로세스에게 signal을 보낼 수도 있다.

 

 

 

 , 지정된 파일과 관련된 PID KILL시킬 수도 있으며 재시작할 수도 있다.

 

 

 

 

 

 

첫번째 예로서 특정파일이나 디렉토리를 사용하는 프로세스의 PID확인하는 예이다.

 

 

 

 fuser를 사용하는 가장 기본적인 목적이 특정파일이나 디렉토리를 사용하고있는 프로세스의 PID를 확인하는 것이다.

 

 

 

 아래의 예는 /etc/vsftpd/vsftpd.conf를 사용하고있는 프로세스의 PID를 확인한 예이다.

 

 

 

 

 

[root@sulinux ~]#fuser -m /etc/vsftpd/vsftpd.conf

/etc/vsftpd/vsftpd.conf:     1rce     2rc     3rc     4rc     5rc     6rc     7rc     8rc     9rc    10rc    11rc    15rc    16rc    17rc    79rc    80rc    83rc    85rc   153rc   154rc   155rc   156rc   157rc   312rc   355rc   359rc   360rc   361rc   365rc   392rc   424rce   969rc  1423rce  1453rce  1454rc  1455rc  1485rc  1487rc  1519rce  1716rce  1729rce  1849rce  1851rce  1866rce  1869rce  1881rce  1893rce  1904rce  1919rce  1931rce  1969rce  1970rce  1981rce  1982rce  1991rce  1995rce  2004rce  2013rce  2084rce  2086rce  2087rce  2088rce  2089rce  2090rce  2091rce  2092rce  2189rce  2191rce  2194rce  2214rce  2216rce  2447rce  2480rce  2509rce  2511rce  2516rce  2521rce  2522rce  2523rce  2525rce  2528rce  2530rce  2536rce  2547rce  2551rce  2553rce  2557rce  2559rce  2561rce  2573rce  2575rce  2579rce  2587rce  2589rce  2591rce  2598rce  2603rce  2605rce  2607rce  2611rce  2615rce  2618rce  2619rce  2620rce  2696rce

[root@sulinux ~]#

 

 

 

 

위의 예와 같이 특정파일이나 디렉토리를 사용하는 프로세스의 PID를 확인하고자 한다면 -m옵션 다음에 파일명이나 디렉토리명을 지정하면 된다.

 

 

 

 

 

 

그리고 다음 예는 fuser를 이용하여 특정파일이나 특정 디렉토리를 사용하고 있는 프로세스들을 모두 죽이는 예이다.

 

 

 

 

 

[root@RockyLinux01 ~]# ps -ef | grep vsftpd

root        1124       1  0 11:13 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

root        2117    1890  0 11:38 pts/0    00:00:00 grep --color=auto vsftpd

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# fuser -k /usr/sbin/vsftpd

/usr/sbin/vsftpd:     1124e

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# ps -ef | grep vsftpd

root        2120    1890  0 11:38 pts/0    00:00:00 grep --color=auto vsftpd

[root@RockyLinux01 ~]#

 

 

 

 

먼저 ps명령어로 vsftpd프로세스를 확인하였다.

 

 

 

 vsftpd 프로세스가 정상적으로 실행되고 있음을 확인하였다.

 

 

 

 그리고 fuser/usr/sbin/vsftpd를 사용하고 있는 모든 프로세스에게 KILL시그널을 보냈다.

 

 

 

 그런 다음 다시 psvsftpd 프로세스가 실행되고 있는가를 확인해 보았으나 모두 죽고 없다는 것을 확인 할 수 있다.

 

 

 

 

 

이 예와 같이 특정파일이나 디렉토리를 사용중인 프로세스를 모두 죽이려면 -k옵션을 사용하면 된다.

 

 

 

 

 

이번에는 fuser명령어로 프로세스 정보를 확인하는 여러가지 방법들 가운데 가장 상세정보를 확인하는 방법이다.

 

 

 

  fuser명령어에 -v옵션을 사용하면 특정프로세스(또는 데몬파일)가 실행 중에 사용한 사용자정보(USER), PID정보, ACCESS상태정보, 실행명령어(COMMAND)등의 자세한 상황을 파악할 수 있다.

 

 

 

 

 

[root@RockyLinux01 ~]# fuser -v /usr/sbin/vsftpd

                     USER        PID ACCESS COMMAND

/usr/sbin/vsftpd:    root       1124 ...e. vsftpd

[root@RockyLinux01 ~]#

 

 

 

 

위의 예는 httpd프로세스의 소유자(USER), PID, ACCESS, COMMAND정보를 확인한다.

 

 

 

 

그리고 다음은 /usr/sbin/sshd데몬파일의 실행상태를 확인한 예이다.

 

 

 

 현재 sshd데몬이 실행상태이고 실행 상태정보를 확인하기 위하여 다음과 같이 실행하였다.

 

 

 

 

 

[root@sulinux ~]#fuser -v /usr/sbin/vsftpd

 

                     USER        PID ACCESS COMMAND

/usr/sbin/vsftpd:    root       1770 ...e. vsftpd

                     nobody     1776 ...e. vsftpd

                     sspark     1778 ...e. vsftpd

 

[root@sulinux ~]#

 

 

 

 

그 결과 root소유자로 실행되어 있으며, PID 1823, 1953, 2230으로 실행되어 있고, 실행가능한 상태(e)임을 알 수 있다.

 

 

 

 

 

그리고 다음은 모든 프로세스들에 대한 상세정보를 확인하는 fuser의 예이다.

 

 

 

 지금까지는 특정 데몬파일 또는 프로세스들에 관련된 상태정보들을 확인하였다.

 

 

 

 이번에는 특정파일시스템이나 블록장치(block device)에 마운트되어 있는 특정파일을 액세스(access)하는 모든 프로세스들에 대한 실행 상태정보를 확인하는 방법에 대한 예이다.

 

 

 

 다음 예를 보자.

 

[root@RockyLinux01 ~]# fuser -mv /usr/sbin/vsftpd

                     USER        PID ACCESS COMMAND

/usr/sbin/vsftpd:    root     kernel mount /

                     root          1 .rce. systemd

                     root          2 .rc.. kthreadd

                     root          3 .rc.. rcu_gp

                     root          4 .rc.. rcu_par_gp

                     root          5 .rc.. netns

                     root          6 .rc.. kworker/0:0-ata_sff

                     root          7 .rc.. kworker/0:0H-events_highpri

                     root          9 .rc.. kworker/0:1H-xfs-log/dm-0

                     root         10 .rc.. mm_percpu_wq

                     root         11 .rc.. kworker/u2:1-events_unbound

                     root         12 .rc.. rcu_tasks_kthre

                     root         13 .rc.. rcu_tasks_rude_

                     root         14 .rc.. rcu_tasks_trace

                     root         15 .rc.. ksoftirqd/0

                     root         16 .rc.. rcu_preempt

                     root         17 .rc.. migration/0

                     root         19 .rc.. cpuhp/0

                     root         22 .rc.. inet_frag_wq

                     root         23 .rc.. kauditd

                     root         24 .rc.. khungtaskd

                     root         25 .rc.. oom_reaper

                     root         26 .rc.. writeback

                     root         27 .rc.. kcompactd0

                     root         28 .rc.. ksmd

                     root         29 .rc.. khugepaged

                     root         30 .rc.. cryptd

                     root         31 .rc.. kintegrityd

이하생략….

 

 

 

 

위의 예와 같이 현재 프로세스정보와 관련된 가장 상세한 모드로 확인하려면 다음과 같이 -mv옵션을 사용하여 fuser를 실행하기 바란다.

 

 

 

 , 아래 예는 sshd데몬(프로세스)파일이 마운트되어 있는 파일시스템상의 모든 프로세스들에 대한 실행상태정보를 확인한 것이다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  96 명