장치의 마운트 해제를 방해하는 프로세스를 확인하는 방법은 무엇입니까?

장치의 마운트 해제를 방해하는 프로세스를 확인하는 방법은 무엇입니까?

때로는 다음을 제거하고 싶습니다.USB 장치하지만 오류가 umount /run/media/theDrive발생합니다 .drive is busy

어떤 프로세스나 프로그램이 장치에 액세스하고 있는지 확인하는 방법은 무엇입니까?

답변1

lsof | grep /media/whatever마운트를 사용하는 객체가 무엇인지 알아내는 데 사용됩니다 .

또한 umount -l정리하는 동안 새 프로세스가 드라이브를 사용하지 못하도록 방지하려면 (지연된 마운트 해제)를 고려하십시오.

답변2

대부분의 경우 사용하기에 가장 좋은 명령은 다음과 같습니다.라소프("에스에프에어즈").

lsof +f -- /media/usb0

/media/usb0마운트 해제할 USB 드라이브 또는 기타 파일 시스템의 마운트 지점은 어디에 있습니까? +f --lsof에게 후속 인수를 마운트 지점으로 처리하도록 지시합니다. 일반적으로(항상은 아니지만) 이를 자체적으로 관리하므로 이것도 lsof /media/usb0유효합니다. 이것은 열린 파일(링크되지 않은 파일도 포함), 메모리 매핑된 파일, 현재 디렉터리 및 좀 더 모호한 용도를 찾습니다. 다른 사용자 프로세스에 대한 정보를 얻으려면 루트로 명령을 실행해야 합니다(일부 unice는 lsof루트로 실행해야 한다고 생각합니다).

lsof가 찾을 수 없는 몇 가지 용도가 있습니다. 이는 이동식 미디어에서는 일반적이지 않습니다. 여기에는 다음이 포함됩니다.

  • /foo마운트 지점: /foo/bar마운트 지점인 경우 마운트 해제할 수 없습니다.
  • /foo마운트된 장치: /foo/bar마운트된 블록 장치이거나 루프에 마운트된 일반 파일이거나 Linux 바인드 마운트의 소스인 경우 마운트 해제할 수 없습니다.
  • NFS 내보내기: lsof는 커널 NFS 서버 내보내기 트리를 감지하지 않습니다.

긴급 상황에 사용할 수 있는 또 다른 명령은 fusionr입니다. 이 명령은 파일이 열려 있는 장치에 있는 프로세스의 PID를 간단히 나열합니다.

fuser -m /media/usb0

답변3

파일을 열다

파일을 여는 프로세스가 일반적인 원인입니다. 보여주세요:

lsof +f -- <mountpoint or device>

/dev/<device>사용하는 대신 사용하면 이점이 있습니다 /mountpoint. 마운트 지점이 나중에 사라지 umount -l거나 재정의된 마운트에 의해 숨겨질 수 있습니다.

fuserlsof또한 작동하지만 더 유용한 출력이 있다고 생각합니다 . 그러나 fuser드라마를 일으키는 과정을 없애고 인생을 계속 살아갈 수 있을 때 유용합니다.

파일 나열 <mountpoint>(위 경고 참조):

fuser -vmM <mountpoint>

쓰기 위해 파일을 연 프로세스만 대화형으로 종료합니다.

fuser -vmMkiw <mountpoint>

mount -o remount,ro <mountpoint>읽기 전용 모드로 다시 마운트( )한 후에는 나머지 모든 프로세스를 안전하게 종료할 수 있습니다.

fuser -vmMk <mountpoint>

마운트 포인트

범인은 커널 자체일 수 있습니다. 마운트하려는 파일 시스템 위에 다른 파일 시스템을 마운트하면 umount문제가 발생할 수 있습니다. 조사하다:

mount | grep <mountpoint>/

루프백 설치의 경우(스티븐 키트에게 감사드립니다), 다음 출력도 확인하세요.

losetup -la

익명 인덱스 노드(Linux)

익명 인덱스 노드다음을 통해 생성할 수 있습니다:

  • 임시 파일( open포함 O_TMPFILE)
  • inotify보다
  • [이벤트 FD]
  • [사건 조사]
  • [시간제 노동자]

이들은 가장 파악하기 어려운 포켓몬 유형 이며 lsof열에 ( TYPEa_inodelsof매뉴얼 페이지).

에는 표시되지 않으므로 lsof +f -- /dev/<device>다음이 필요합니다.

lsof | grep a_inode

익명 inode를 보유한 프로세스를 종료하려면 다음을 참조하세요.현재 inotify 시계 나열(경로 이름, PID).

inotify보기(리눅스)

이 댓글이유를 설명하다inotify 해서는 안 된다제거를 방지하지만이 메모자신이 처한 상황을 설명한다~ 할 것이다:

vx_softcnt_flush()제거 작업 중 통화 가 중단될 수 있습니다 . 정지는 inotify watchdog이 i_count변수를 증가시키고 v_os_hold valueinotify watchdog이 보류를 해제할 때까지 보류를 높게 만들기 때문에 발생합니다.

답변4

GNOME을 사용하는 경우 Nautilus를 통해 제거하면 드라이브를 아직 사용 중인 프로세스와 사용 중인 파일을 알려주는 메시지가 표시됩니다.

대체 텍스트

관련 정보