하위 폴더가 많은 폴더를 빠르게 삭제하려면 어떻게해야합니까? 25 초 및 사용자 시간 0.072 초

266778 하위 폴더가있는 폴더가 있습니다. 어떻게 삭제합니까?

나는 시도했다

cd ~/.local/share/Trash/
sudo rm -rf *

그러나 시간이 많이 걸립니다. 실시간으로 1 분 25 초 및 사용자 시간 0.072 초 후에 2500 개의 폴더 만 삭제되었습니다. 이렇게하면이 폴더를 삭제하는 데 2 ​​시간 이상이 걸립니다.

이 폴더를 더 빨리 삭제하는 방법이 있습니까? 사용자 시간과 실시간이 왜 그렇게 큰 차이가 있습니까?

real    1m25.474s
user    0m0.072s
sys     0m28.142s

Linux 2.6.32 (Ubuntu 10.04.4 LTS)를 사용합니다.



답변

“find”버전이 -delete 부속 명령을 구현하는 경우 시도 할 수 있습니다

find directory -delete

이 경우 :

find ~/.local/share/Trash/ -delete

rm과 같은 일부 명령은 커널에서 대부분의 작업을 수행합니다. 파일 시스템 루틴에서 정확히 말하면 시스템 호출을 수행하는 데 소요되는 시간은 이러한 방식으로 설명되므로 “rm”명령이 오랫동안 실행되는 동안 사용자 영역에서 많은 작업을 수행하지 않습니다. 시스템 호출은 대부분의 작업을 수행합니다.


답변

그것은 당신의 fast 정의에 달려 있습니다 . 이미 여기에있는 대답은 파일 시스템에서 디렉토리를 실제로 제거하는 좋은 해결책을 제공하지만 실제로 필요한 디렉토리 이름 을 가능한 한 빨리 해제 해야하는 경우 동일한 파일 시스템의 이름 바꾸기가 즉시 이루어집니다.

{ mv directory directory.gone && rm -rf directory.gone; } &

기술적으로 실제 삭제를 가속화하지 않았기 때문에 부정 행위이지만 실제로는 매우 유용합니다.이 트릭을 항상 사용하므로 느린 삭제 작업을 기다릴 필요가 없습니다.


답변

rm -rf directory또는 rm -rf *로컬 rm구현이 중단 되지 않는 한 물론 가장 빠른 방법 입니다.

사용 find하면 이점이 없습니다.

이것이 빠른지 느린지는 주로 파일 시스템과 OS 구현에 달려 있습니다. 그래서 그 질문은 부적절 해 보입니다.

Solaris에서 UFS 및 ZFS는 모두 파일 시스템 구현이 발생 배경 삭제 코드 지연 등이 같은 작업의 이런 종류의 매우 빠른 것으로 알려져있다 unlink()rmdir()통화 관련 객체가 총에 더 많은 시간이 걸릴 것입니다 경우에도 빠른 반환을.

커널에서 백그라운드 삭제가 지연되면 디렉토리 업데이트도 빠르게 수행 될 수 있으며 전체 작업 속도를 높이는 데 도움이됩니다.


답변

이것은 부분적인 대답 일 뿐이며 명령이 반환하는 세 가지 값을 나타냅니다. time(1)맨 페이지 에서 인용 :

(ⅰ) 호출 및 종료 사이에 경과 된 실제 시간, (ⅱ) 사용자 CPU 시간 (합계를 tms_utime하고 tms_cutime있는 중시하는 struct tms의해 반환 times(2)), 및 (iii) 시스템 CPU 시간 (의 합 tms_stimetms_cstimeA의 값 struct tms에 의해 반환 됨 times(2)). “


답변