답변:
사용 lsof | grep /media/whatever
마운트를 사용하는 것을 알 수 있습니다.
또한 umount -l
정리 중에 새 프로세스가 드라이브를 사용하지 못하도록 (lazy umount)도 고려 하십시오.
fuser -mv /path/to/mountpoint
mointpoint를 사용하여 프로세스를 찾기위한 더 읽기 쉬운 대안이 될 수 있습니다.
lsof | grep
가 나를 위해 더 잘 작동합니다. fuser -mv
관련없는 프로세스의 80+ 이상을 덤프하는 것 같습니다. 마운트 바인드 디렉토리를 사용하고 있습니다.
대부분의 경우, 사용하는 가장 명령이다 함으로써 두가지 ( " L I S t O 펜 F의 세틸").
lsof +f -- /media/usb0
여기서 /media/usb0
마운트 해제 할 USB 드라이브 또는 기타 파일 시스템의 마운트 지점입니다. +f --
lsof에게 후속 인수를 마운트 포인트로 처리하도록 지시합니다. 항상 그런 것은 아니지만 일반적으로 자체적으로 관리되므로 lsof /media/usb0
작동합니다. 열린 파일 (연결되지 않은 파일도 포함), 메모리 매핑 된 파일, 현재 디렉토리 및 더 모호한 용도를 찾습니다. 다른 사용자의 프로세스에 대한 정보를 얻으려면 명령을 루트로 실행해야합니다. 루트로 실행해야하는 유니스가 있다고 생각 lsof
합니다.
lsof가 찾지 못하는 용도가 있습니다. 이동식 미디어에서는 일반적이지 않습니다. 그들은 다음을 포함합니다 :
/foo
경우 마운트 해제 할 수 없습니다 /foo/bar
./foo
경우 /foo/bar
마운트 블록 장치 또는 루프에 장착 된 일반 파일, 또는 그것이 리눅스 바인딩의 소스 인 경우 마운트합니다.핀치에서 사용할 수있는 또 다른 명령은 장치에서 열린 파일이있는 프로세스의 PID 만 나열하는 퓨저입니다.
fuser -m /media/usb0
lsof
Peter가 말한 것처럼 사용할 수 있거나 모든 것을 죽이고 마운트 해제하려는 경우 다음과 같은 작업을 수행 할 수 있습니다.
fuser -Mk /mnt/path
umount /mnt/path
-M
안전 을 위해 사용하십시오 .
-M
을 적용해야하는지 명확히하고 싶을 수 있습니다 .
fuser
: -M, --ismountpoint Request will be fulfilled only if NAME specifies a mountpoint. This is an invaluable seatbelt which prevents you from killing the machine if NAME happens to not be a filesystem.
열린 파일이있는 프로세스가 일반적인 범인입니다. 그들을 표시하십시오 :
lsof +f -- <mountpoint or device>
사용하는 장점이있다 /dev/<device>
보다는 /mountpoint
마운트 지점이 후 사라집니다 : umount -l
, 또는이 오버레이 산으로 숨겨져 될 수있다.
fuser
사용할 수도 있지만 내 마음 lsof
에는 더 유용한 출력이 있습니다. 그러나 fuser
드라마의 원인이되는 프로세스를 중단하여 인생을 살아갈 수있는 경우에 유용합니다.
파일을 나열하십시오 <mountpoint>
(위의 경고 참조).
fuser -vmM <mountpoint>
쓰기 위해 열린 파일이있는 프로세스 만 대화식으로 종료하십시오.
fuser -vmMkiw <mountpoint>
읽기 전용 ( mount -o remount,ro <mountpoint>
)을 다시 마운트 한 후 나머지 모든 프로세스를 종료하는 것이 안전합니다 (r).
fuser -vmMk <mountpoint>
범인은 커널 자체가 될 수 있습니다. 파일 시스템에 마운트 된 다른 파일 시스템 umount
이 슬픔을 일으킬 것입니다. 확인 :
mount | grep <mountpoint>/
루프백 마운트의 경우 ( Stephen Kitt 덕분에 ) 다음의 출력도 확인하십시오.
losetup -la
익명의 inode 는 다음과 같이 만들 수 있습니다.
open
과 O_TMPFILE
)다음은 포켓몬의 가장 어려운 유형과의 표시 lsof
의 TYPE
같은 열 a_inode
합니다 (에 문서화되지 않은 lsof
사람 페이지 ).
에 표시되지 lsof +f -- /dev/<device>
않으므로 다음을 수행해야합니다.
lsof | grep a_inode
익명의 inode를 보유한 프로세스를 종료하려면 현재 inotify 시계 나열 (경로 이름, PID)을 참조하십시오 .
inotify
시계 (Linux)이 코멘트는 이유를 설명 inotify
하지 말아야 마운트 해제를 방지하지만, 이 메모가 있는이 상황에 대해 설명 됩니다 :
마운트 해제로 인해
vx_softcnt_flush()
통화 가 중단 될 수 있습니다 . inotify 시계가i_count
변수를 증가v_os_hold value
시키고 inotify 감시자가 보류를 해제 할 때까지가 상승 상태를 유지 하기 때문에 정지가 발생합니다 .
lsof
.
Mountpoints
섹션에 추가되었습니다 .
(적어도) OpenBSD의 경우 :
$ fstat /mnt/mountpoint
예를 들어 ( 그렇지 않으면 우리 자신의 프로세스 만 볼 때 루트로 doas
실행 하는 데 사용 fstat
) :
$ doas fstat /usr/ports
USER CMD PID FD MOUNT INUM MODE R/W SZ|DV NAME
_pbuild make 15172 wd /usr/ports 3923598 drwxrwxr-x r 1536 /usr/ports/
_pbuild make 40034 wd /usr/ports 3923598 drwxrwxr-x r 1536 /usr/ports/
이 경우 /usr/ports
사용자 _pbuild
가 두 make
프로세스 실행을 완료 할 때까지 마운트 해제 할 수 없습니다 .