728x90
[꿀팁] 리눅스 - fuser명령 사용법과 디스크 강제해제 umount-devide is busy 해결
리눅스 파일시스템을 포멧하거나 용량을 바꾸기 위해서는 unmount후에 작업이 가능합니다.
그러나 아래와같이 umount 명령으로 해제를 시행하면 "device is busy" 라고 해제가 되지 않습니다.
이와같이 특정 프로세스가 파일 시스템의 디렉토리를 사용중일때는 해당 디스크를 해제를 하지 못하고 강제로 해제를 해야 합니다.
# umount /some/dirpath
umount: /some/dirpath: device is busy
fuser명령으로 디스크 강제해제 절차
디스크를 강제 마운트 하는 절차는 아래와 같습니다.
1. # fuser -cu [/some/mountedpath]
- 특정 디렉토리를 사용중인 프로세스를 확인합니다.
2. # fuser -ck [/some/mountedpath]
- 사용중인 실행 프로세스를 강제 중지 합니다.
3. # fuser -cu [/some/mountedpath]
- 사용중인 실행 프로세스를 재확인 합니다.
4. umount /some/mountedpath
- 파일 시스템을 해제 합니다.
5. mount /dev/sda1 /some/new/mountpath
- 파일 시스템 /dev/sda1을 다른 디렉토리로 마운트 한다
fuser 사용법 추가 정리
fuser 명령으로 프로세스가 사용중인 파일,디렉토리,소켓 등에 대한 확인과 중지를 할 수 있습니다.
fuser - identify processes using files or sockets
[fuser 사용법]
Usage: fuser [-fIMuvw] [-a|-s] [-c|-m|-n SPACE] -k -i -SIGNAL NAME
-a,--all display unused files too
-s,--silent silent operation
-v,--verbose verbose output
-l,--list-signals list available signal names
-I,--inode use always inodes to compare files
-m,--mount show all processes using the named filesystems or block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-u,--user display user IDs
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-k,--kill kill processes accessing the named file
-i,--interactive ask before killing (ignored without -k)
-SIGNAL send this signal instead of SIGKILL
# fuser [options] [file|socket]
# fuser [options] -SIGNAL [file|socket]
[주요 option 사용 예시]
# fuser -u somepath : 디렉토리, 파일(somepath)을 사용하는 프로세스 및 user를 확인
* 도커 엔진이 사용하는 소켓을 사용하는 프로세스를 확인 해보자. /var/run/containerd/containerd.sock 는 소켓이지만 리눅스는 디렉토리, 파일, 소켓, 프로세스 등을 모두 파일로 이해하고 있기 때문에 파일이라고 생각하면됩니다. 아래와 같이 특정 파일의 사용자를 확인하는 "-u" 그리고 상세한 출력으로 "-v" 를 사용했다.
# fuser -u /var/run/containerd/containerd.sock
/run/containerd/containerd .sock: 2075(root)
# fuser -uv /var/run/containerd/containerd.sock
USER PID ACCESS COMMAND
/run/containerd/containerd.sock:
root 2075 F.... (root)containerd
* 위에서 찾은 pid가 2075 인 프로세스 확인해보자. "pid 2075 의 프로세스 정보를 "-f"로 상세히 출력했다.
# ps -f -p 2075
UID PID PPID C STIME TTY TIME CMD
root 2075 1 0 08:43 ? 00:00:00 /usr/bin/containerd
# fuser - k somepath : 해당 파일을 사용중인 프로세스를 중지합니다.
# fuser -i -k /var/run/containerd/containerd.sock
/run/containerd/containerd.sock: 2075
Kill process 2075 ? (y/N) y
* -i 옵션으로 프로세스를 종료 시킬지 묻고 yes라고 할때 중지하도록 해보았다
# fuser -v : 내용을 자세히 출력합니다.
# fuser -fu . : 현재 디렉토리를 사용하고있는 프로세스의 프로세스 ID와 사용자를 표준 출력 합니다.
[참고문헌]
linux.die.net/man/1/fuser
www.ibm.com/support/knowledgecenter/en/ssw_aix_71/f_commands/fuser.html
728x90
반응형
'InfraPlatform' 카테고리의 다른 글
[리눅스 꿀팁] fdisk 사용하기 (전문가모드) (0) | 2020.11.30 |
---|---|
[셀스크립트 응용] ICONV 을 이용한 파일 인코딩(Encoding) (0) | 2020.11.29 |
[셀스크립트 응용] ICONV와 SED 를 활용하여 파일의 문자셋(charset)을 변환 하는 방법 (0) | 2020.11.29 |
리눅스 VirtualBox Guest Addition설치와 VBoxLinuxAdditions.run 설치오류 해결 (0) | 2020.10.22 |
[꿀팁] 리눅스 콘솔에서 한글 깨짐 해결 - localectl (0) | 2020.08.05 |
[꿀팁] Centos 8에서 표준시간 설정하는 방법 (NTP, rdate, chronyd,timedatectl) (0) | 2020.08.04 |
[꿀팁] 고전적 리눅스 튜닝 - 파일 시스템 마운트 옵션으로 성능 개선하기 (0) | 2020.07.03 |