“기기 또는 리소스 사용량이 많은”극복하는 방법?


229

rm -rf폴더로 이동 하려고했는데 "장치 또는 리소스 사용량이 많았습니다".

Windows에서는이 문제를 해결하기 위해 LockHunter를 사용했을 것입니다. 리눅스와 동등한 것은 무엇입니까? (같은 전체 기사 간단한 대답 방법 "이 잠금을 해제", 그리고로주십시오 이 하나 . 그들이 유용하다하더라도, 나는 현재 단지 ASimpleMethodThatWorks ™에 관심이 있어요)


5
고마워 이것이 편리했습니다. Linux에서 Windows로 왔으며 lsof-LockHunter와 동등한 것을 찾고있었습니다.
— Sonia Hamilton

3
도대체? 유닉스는 Windows처럼 열린 파일을 삭제 하지 못하게합니다. 이것이 당신이 실행함으로써 전체 시스템을 삭제할 수있는 이유입니다 rm -rf /... / bin / rm을 포함한 모든 단일 파일을 행복하게 삭제할 것입니다.
— psusi

1
@psusi, 그건 틀렸어. 정보의 출처가 잘못되었거나 그냥 구성하고 있습니다. Windows와 마찬가지로 Linux에는 파일 및 장치 잠금이 있습니다. 그래도 부러 졌어요. 0pointer.de/blog/projects/locking.html
— foobarbecue

1
@foobarbecue, 일반적으로 그것들은 권고 잠금 일 뿐이며 맨 페이지는 적어도 링크가 아닌 읽기 / 쓰기 전용임을 나타내는 것 같습니다.
— psusi

답변:


232

원하는 도구는 목록 열기 파일lsof 을 나타냅니다 .

많은 옵션이 있으므로 매뉴얼 페이지를 확인하십시오. 그러나 디렉토리 아래에 열려있는 모든 파일을 보려면 다음을 수행하십시오.

lsof +D /path

의 파일 시스템을 통해 되풀이 /path되므로 큰 디렉토리 트리에서 수행하십시오.

파일이 열려있는 프로세스를 알고 있으면 해당 앱을 종료하거나 kill(1)명령으로 종료 할 수 있습니다 .


46
결과가 없으면 어떻게합니까?
— 해병대

22
@marines : 다른 파일 시스템이 아래에 마운트되어 있는지 확인하십시오 /path. 이것이 숨겨진 "열린 파일"의 한 가지 원인입니다.
— camh

2
경로로 직접 lsof 명령이 작동하지 않습니다. 따라서 기본적으로 경로 위치로 가서 lsof busy_file을 실행 한 다음 모든 프로세스를
— 종료

4
lsof나를 위해 아무것도하지 않는 것 같습니다 : lsof storage/logs/laravel.log아무것도 반환하지 않았습니다 lsof +D storage/logs/. umount로 응답했습니다 not mounted.
— Ryan

1
@camh answer에 대해 자세히 설명하십시오 mount | grep <path>. 이것은에 /dev/<abc>장착 된 것을 보여줍니다 <path>. 를 사용한 sudo umount -lf /dev/<abc>다음 제거해보십시오 <path>. 나를 위해 작동합니다. 감사합니다 @camh
— Vikas Goel

107

때로는 마운트 문제로 인한 결과이므로 제거하려는 파일 시스템이나 디렉토리를 마운트 해제합니다.

umount / 경로


5
1/4 ~ 4입니다. 고마워, 내 밤을 구했어 재밌어요 한 줄에-너무 많은 시간 낭비 -.- '
— Aiyion.Prime

1
내 문제는 로그 디렉토리는 / dev / 매퍼 / vg00에 루트로 마운트 한
— Spikolynn

1
와인 더에서 비슷한 잼을 피하는 데 도움이되었습니다.
— Jon

1
필자의 경우 Jenkins는 작업 중단 후 chroot dir을 마운트 해제하지 않았습니다.
— zarkone

1
내 경우에는 우분투 데스크탑으로 마운트 해제가 작동했습니다! 감사
— JRichardsz

14

나는 fuser이런 종류의 것을 사용합니다. 마운트 내에서 파일을 사용중인 프로세스를 나열합니다.


fuser파일 시스템을 마운트 해제하려는 특정 경우에만 도움이됩니다. 여기서 문제는 특정 파일을 사용하는 것을 찾는 것입니다.
— Gilles

@Gilles : 파일에서도 작동합니다.
— BillThor

죄송합니다. 잘못된 이의 제기 : fuser문제는 디렉토리 트리에서 열려있는 모든 파일을 찾는 것이므로 여기서 도움이되지 않습니다. 당신은 말할 수있는 lsof모든 파일과 필터를 보여, 아니면 재귀 수 있도록; fuser이러한 모드는 없으며 모든 파일에서 호출해야합니다.
— Gilles

@ 길레 : fuser작품 목록. 시도 fuser /var/log/*모든 로그는 어떤 것들 누가 열어 가지고 말할 것이다 열려있는 경우. 간단한 와일드 카드 경우, 작동하지 않습니다 find없이 또는 xargs일을 할 것입니다.
— BillThor

1
lsof내가 경로 fuser에 없었기 때문에 +1 + 감사합니다.
— stevesliva

12

해결책은 다음과 같습니다.

  1. 디렉토리로 이동하여 입력 ls -a
  2. 당신은 .xyz파일 을 찾을 수 있습니다
  3. vi .xyz 파일 내용이 무엇인지 조사
  4. ps -ef | grep username
  5. 8 번째 열 (마지막 행)에 .xyz 내용이 표시됩니다.
  6. kill -9 job_ids -job_ids는 해당 오류의 두 번째 열 값으로 인해 8 번째 열의 내용
  7. 이제 폴더 나 파일을 삭제하십시오.

4
그 신비한 파일이 어디에서 오는지 아는 것이 흥미로울 것입니다.
— John WH Smith

9

나는이 같은 문제가 있었고 @camh 권장 사항으로 시작하여 하나의 라이너를 만들었습니다.

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

이 awk명령은 PIDS를 가져옵니다. 이 tail명령은 성가신 첫 번째 항목 "PID"를 제거합니다. 내가 -9죽일 때 사용 했는데 다른 사람들은 더 안전한 옵션을 가지고있을 수 있습니다.


1
보다 보편적으로 만들려면 log / 대신 현재 디렉토리에 ./를 사용할 수 있습니다.
— user2589273

좋은 지적입니다, @ user2589273. 업데이트되었습니다.
— Choylton B. Higginbottom

5

자동화 된 테스트에서 램 디스크를 만들 때이 문제가 발생했습니다. 명령은 다른 답변에 제안 lsof하고 fuser, 아무 도움이되었다. 테스트 후 마운트를 해제 한 다음 폴더를 삭제하려고했습니다. 나는 그것을 제거 할 수 없었기 때문에 여러 해 동안 정말로 혼란스러워했다. 나는 계속 "장치 나 자원을 바쁘게" 얻는다 !

우연히 나는 램 디스크를 제거하는 방법을 발견했습니다. mount명령을 실행 한 횟수만큼 마운트를 해제해야했습니다. 즉 sudo umount path

자동화 된 테스트를 사용하여 생성 되었기 때문에 여러 번 마운트되었으므로 테스트 후에 한 번 마운트 해제하면 제거 할 수 없었습니다. 따라서 수동으로 여러 번 마운트를 해제하면 마침내 일반 폴더가되어 삭제할 수 있습니다.

이 문제를 겪고있는 다른 사람을 도울 수 있기를 바랍니다.


5

NFS 네트워크 파일 시스템이있는 서버에서이 문제가 자주 발생합니다. 파일의 이름이 일반적으로이므로 파일 시스템과 관련이 있다고 가정합니다 .nfs000000123089abcxyz.

내 일반적인 해결책은 파일의 부모 디렉토리 이름을 바꾸거나 이동 한 다음 하루나 이틀 후에 다시 파일을 자동으로 제거하여 파일을 삭제할 수 있습니다.이 시점에서 디렉토리를 자유롭게 삭제할 수 있습니다.

이것은 일반적으로 소프트웨어 라이브러리를 설치하거나 컴파일하는 디렉토리에서 발생합니다.


4

위의 Prabhat의 질문에서 벗어나서, encfs 프로세스를 중단하고 재부팅하여 해결할 때 macos high sierra 에서이 문제가 발생했습니다.

ps -ef | grep name-of-busy-dir

프로세스와 PID (2 열)를 보여주었습니다.

sudo kill -15 pid-here

고쳤다.


이것은 나에게도 효과가있었습니다. 무엇 -15입니까?
— O.rka

3

서버에 액세스 할 수있는 경우 시도하십시오

서버에서 해당 디렉토리 삭제

또는 umount 를 다시 마운트umount -l 하고 정상 umount에 문제가있는 경우 lazy umount를 시도하십시오 .

나도이 문제가 있었다

lsof +D path : 출력이 없습니다

ps -ef : 관련 정보를 제공하지 않습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.