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


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.