Linux : Umount를 수행 할 때 어떤 프로세스가 "장치 바쁜"원인입니까? [닫은

StackOverflow https://stackoverflow.com/questions/624154

문제

Linux : Umount를 수행 할 때 어떤 프로세스가 "장치 바쁜"원인입니까?

도움이 되었습니까?

해결책

를보세요 LSOF 명령 (열린 파일 목록) - 어떤 프로세스가 열려 있는지 알 수 있습니다. 때로는 까다 롭지 만 종종 단순한 것만 큼 sudo lsof | grep (your device name here) 당신을 위해 그것을 할 수 있습니다.

다른 팁

만일을 대비하여 ... 때로는 터미널에서 Umount를 호출하는 경우가 발생하며 현재 디렉토리는 장착 된 파일 시스템에 속합니다.

당신은 사용해야합니다 퓨저 명령.

예를 들어. fuser /dev/cdrom 사용 프로세스의 PID를 반환합니다. /dev/cdrom.

마운트를 마치려고하는 경우 -k 스위치 (참조 man fuser).

"losetup -a"가있는 파일 시스템의 파일에 매핑 된 오픈 루프 장치를 확인하십시오. 그들은 LSOF 또는 퓨저와 함께 나타나지 않을 것입니다.

또한 확인하십시오 /etc/exports. NFS를 통해 마운트 포인트 내에서 경로를 내보내는 경우, 마운트를 시도 할 때이 오류가 발생하고 아무것도 나타나지 않습니다. fuser 또는 lsof.

lsof +f -- /mountpoint

( /mountpoint에 장착 된 마운트에 파일을 사용하는 프로세스를 나열합니다. 특히 장착 된 USB 스틱 또는 CD /DVD를 사용하는 프로세스를 찾는 데 특히 유용합니다.

LSOF와 FUSER는 실제로 특정 파일을 열어 두는 프로세스를 찾는 두 가지 방법입니다. Umount가 성공하기를 원한다면 -F 및 -L 옵션을 조사해야합니다.

이것이 바로 "퓨저 -m /mount /point"가 존재하는 이유입니다.

BTW, 나는 "퓨저"또는 "LSOF"가 커널 모듈에 의해 리소스가 보유되는시기를 나타낼 것이라고 생각하지 않지만 일반적으로 해당 문제가 없지만 ..

LSOF와 FUSER도 나에게 아무것도주지 않았습니다.

가능한 모든 디렉토리를 .OLD로 바꾸고 변경 한 후마다 시스템을 다시 부팅하는 프로세스 후에는 책임이있는 특정 디렉토리 (PostFix와 관련)를 찾았습니다.

SDCard 기반 루트 파일 시스템 (Sheeva Plug)에서 디스크 쓰기를 최소화하기 위해/var/spool/postfix to/disk2/pers/mail/postfix/varspool에서 Symlink를 한 번 만들었습니다.

이 Symlink를 사용하면 PostFix 및 DoveCot 서비스를 중지 한 후에도 (PS AUX 및 NETSTAT -TUANP는 모두 관련이없는 것을 보여주지 않았습니다) 나는 Unbount /Disk2 /Pers를 할 수 없었습니다.

Symlink를 제거하고 PostFix 및 DoveCot 구성 파일을 업데이트하여 새로운 Dirs ON/DISK2/PERS/I를 직접 가리키면 서비스를 성공적으로 중지하고 디렉토리를 마운트 할 수있었습니다.

다음에 나는 다음의 출력을 더 자세히 살펴볼 것이다.

ls -lR /var | grep ^l | grep disk2

위의 명령은 디렉토리 트리에 모든 기호 링크를 재귀 적으로 나열하고 (여기서 /var에서 시작) 특정 대상 마운트 포인트 (여기서 Disk2)를 가리키는 이름을 필터링합니다.

열린 파일

열린 파일이있는 프로세스는 일반적인 범인입니다. 표시 :

lsof +f -- <mountpoint or device>

사용하는 이점이 있습니다 /dev/<device> 보다는 /mountpoint: MountPoint는 AN 후에 사라집니다 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>/

루프백 마운트의 경우 다음의 출력도 확인하십시오.

losetup -la

익명의 Inodes (Linux)

익명의 inodes 다음으로 작성할 수 있습니다.

  • 임시 파일 (open ~와 함께 O_TMPFILE)
  • Inotify 시계
  • EventFD
  • EventPoll
  • TimerFD

이것들은 가장 어려운 유형의 포켓몬이며 lsof'에스 TYPE 칼럼으로 a_inode (문서화되지 않은 lsof 남자 페이지).

그들은 나타나지 않을 것입니다 lsof +f -- /dev/<device>, 당신은 다음을 필요로합니다 :

lsof | grep a_inode

익명의 inodes를 보유한 살해 과정은 다음을 참조하십시오. 현재 inotify 시계 목록 (PathName, PID).

열린 파일로 모든 서비스와 프로세스를 중지 한 후에도 여전히 장치를 마운트하지 않거나 다시 마운트 할 수없는 경우 장치를 바쁘게 유지하는 스왑 파일 또는 스왑 파티션이있을 수 있습니다. 이것은 나타나지 않을 것입니다 fuser 또는 lsof. 스와핑을 끄십시오 :

sudo swapoff -a

미리 확인하고 스왑 파티션 또는 스왑 파일의 요약을 다음과 같이 표시 할 수 있습니다.

swapon -s

또는:

cat /proc/swaps

명령을 사용하는 대안으로 sudo swapoff -a, 서비스를 중지하여 스왑을 비활성화하거나 시스템 단위. 예를 들어:

sudo systemctl stop dphys-swapfile

또는:

sudo systemctl stop var-swap.swap

제 경우에는 스왑을 끄는 것이 필요했습니다. 스왑을 끄는 것이 필요했으며, 글을 쓸 수있는 파일을 사용하여 서비스와 프로세스를 중지하여 루트 파티션을 실행하기 위해만 읽을 수 있습니다. fsck 재부팅없이 내 루트 파티션에. 라즈베리 파이가 Raspbian Jessie를 운영하는 데 필요했습니다.

파일 시스템에 장착 된 파일 시스템은 마운트를 만들려고합니다. target is busy 사용중인 파일 외에 오류. (예를 들어 mount -o bind /dev /mnt/yourmount/dev 사용하기 위해 chroot 거기.)

파일 시스템에 장착 된 파일 시스템을 찾으려면 다음을 실행하십시오.

mount | grep '/mnt/yourmount'

사용중인 파일을 찾으려면 여기에서 이미 제안한 조언을 찾으십시오.

lsof | grep '/mnt/yourmount'

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top