지정한 파일을 누가 사용하고 있는가? 확인하기(fuser)
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,814 조회
- 0 추천
- 목록
본문
지정한 파일을 누가 사용하고 있는가? 확인하기(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시그널을 보냈다.
그런 다음 다시 ps로 vsftpd 프로세스가 실행되고 있는가를 확인해 보았으나 모두 죽고 없다는 것을 확인 할 수 있다.
이 예와 같이 특정파일이나 디렉토리를 사용중인 프로세스를 모두 죽이려면 -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데몬(프로세스)파일이 마운트되어 있는 파일시스템상의 모든 프로세스들에 대한 실행상태정보를 확인한 것이다.
관련자료
-
이전
-
다음