답변:
사용 lsof | grep /media/whatever마운트를 사용하는 것을 알 수 있습니다.
또한 umount -l정리 중에 새 프로세스가 드라이브를 사용하지 못하도록 (lazy umount)도 고려 하십시오.
fuser -mv /path/to/mountpointmointpoint를 사용하여 프로세스를 찾기위한 더 읽기 쉬운 대안이 될 수 있습니다.
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
lsofPeter가 말한 것처럼 사용할 수 있거나 모든 것을 죽이고 마운트 해제하려는 경우 다음과 같은 작업을 수행 할 수 있습니다.
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프로세스 실행을 완료 할 때까지 마운트 해제 할 수 없습니다 .