나는 sudo du -csh *
(루트 디렉토리에서) sudo find /usr/lib/ -type f -printf "%s\t%p\n" | sort -n | tail -10
sudo du -a / --exclude=/media --exclude=/home | sort -n -r | head -n 100
유사한 명령을 시도했습니다. 나는 이것에 관해 뭔가를 찾고 있어요최근의디스크 공간 사용량 및 유효안정적으로(내 사용 사례에서도).
이것의 문제는 "장치에 남은 공간이 없기 때문에" 실행할 수 없다는 것입니다. 디스크 공간을 확보하는 경우(예: 블리치 비트를 실행하거나 불필요한 크고 불필요한 패키지를 제거하거나 /tmp/에서 일부 파일을 삭제하는 경우) ) 그 이후에는 곧 공간도 차지하게 됩니다./var/lib/docker를 옮겼습니다.크기가 수 기가바이트에 달했고 나중에 해제되었습니다. 이제 무언가가 그 기가바이트의 디스크 공간을 차지하고 있는 것 같습니다.
두 번째 문제는 여유 디스크 공간이 있을 때 이러한 명령을 실행할 때 현재 어떤 파일과 디렉터리가 새롭고 불필요한지 쉽게 식별할 수 없다는 것입니다. 가장 큰 디렉토리는 /usr/share인 것으로 보입니다.
하지만 sudo du -csh /usr/share/* | grep "G"
7GB만 표시되므로 너무 크지는 않습니다. 다른 파티션에 저장한 초기 출력에는 sudo du -ah / --exclude=/media --exclude=/proc --exclude=/home | sort -n -r | head -n 100
1MB 파일(/usr/share/에 있는 파일 포함)만 표시되었습니다.
최근에 추가된 가장 큰 파일 및 디렉토리 목록을 훌륭하고 신속하게 출력하는 좋은 방법이 있습니까? 어쩌면 이를 담당하는 프로세스도 포함할 수 있습니까?가능하다면 명령을 실행할 다른 /tmp/ 디렉터리를 지정할 수 있으면 유용할 것입니다. 저는 Debian10/KDE를 사용하고 있습니다.
최근에 디스크 공간을 차지하고 있는 항목을 나열하는 간단하고 신뢰할 수 있는 방법이 여기에서 유용할 것입니다.
고쳐 쓰다: 사전 설치된 지정된 파일 크기보다 큰 최근 수정된 파일을 루트 디렉터리에 표시할 수 있습니다.찾다. 디렉터리를 제외할 수도 없고 "veracrypt가 이미 실행 중입니다"라는 메시지만 표시되기 때문에 veracrypt를 시작하여 파티션을 마운트 해제할 수도 없습니다. 그러나 여전히 문제의 파일을 찾을 수 있습니다.
명령을 중단해도 디스크 공간이 확보되지 않는 하나의 명령만 실행하는 konsole의 공개 인스턴스인 /proc/pid/task/pid/fd입니다. konsole 창과 모든 탭을 닫은 후 몇 GB가 필요합니다. 여유 디스크 공간.
답변1
위의 간단한 명령을 사용하여 마지막으로 수정된 파일과 디렉터리를 가져올 수 있습니다 mtime
.
# Get files/dirs modified during the last 15 days and then desc sort with disk usage and print the first 10 lines
find / -mtime -15 | xargs -I {} du -sm {} | sort -rn | head -10
# Get files/dirs modified during the last 60 minutes and then desc sort with disk usage and print the first 10 lines
find / -mmin -60 | xargs -I {} du -sm {} | sort -rn | head -10
# Get files/dirs modified between 2020-12-18 and 2020-12-19 then desc sort with disk usage and print the first 10 lines
find / -newermt 2020-12-18 ! -newermt 2020-12-19 | xargs -I {} du -sm {} | sort -rn | head -10
시스템이 생성 시간을 저장할 수 있으면 이를 대신 사용할 수 있습니다 crtime
.
crtime
먼저 설정된 파일을 확인하십시오 .
## Output should be different than - sign
stat -c '%w' <file>
B
그런 다음 옵션과 함께 동일한 find 명령을 사용할 수 있습니다 Birth Time
.
# Get files/dirs **created** between 2020-12-18 and 2020-12-19 then desc sort with disk usage and print the first 10 lines
find / -newerBt 2020-12-18 ! -newerBt 2020-12-19 | xargs -I {} du -sm {} | sort -rn | head -10
파일 시스템에서 이를 처리할 수 있지만 Birth Time
stat 명령에 표시되지 않는 경우 다음을 통해 파일이 저장된 장치의 수준을 직접 확인할 수 있습니다.
# Getting the inode number
ls -i <file>
# Then get crtime
debugfs -R 'stat <inode_no>' <device>
@PascalVKooten이 작성한 Python 패키지가 있습니다.스택 오버플로 스레드생성 시간을 가져오는 데 사용할 수 있는 호출 crtime
이 재귀적(테스트되지 않음)인지는 모르겠지만 다음과 같은 출력을 제공합니다.
1552938281 /home/pascal/crtime/.gitignore
1552938285 /home/pascal/crtime/README.md
1552938282 /home/pascal/crtime/crtime
1552938288 /home/pascal/crtime/deploy.py
그런 다음 타임스탬프를 내림차순으로 정렬하고 날짜/시간으로 변환할 수 있습니다(필요한 경우).
sudo crtime ./ | awk '{print$1}' | sort -rn | xargs -I {} date -d @{}
Mon Mar 18 20:44:48 +01 2019
Mon Mar 18 20:44:45 +01 2019
Mon Mar 18 20:44:42 +01 2019
Mon Mar 18 20:44:41 +01 2019
마지막으로 특정 파일이나 디렉터리를 편집한 마지막 프로세스를 얻으려면 사용자 auditctl
정의 규칙을 사용 및 설정한 다음 ausearch
.
동일한 작업을 수행할 수도 있지만 inotify-tools
전체 루트 파일 시스템에 대해 수행하면 메모리 사용량에 심각한 영향을 미칠 것이라고 생각합니다.
Lsof
가장 최근 파일이 아닌 현재 열려 있는 파일을 포함하기 때문에 작동하지 않습니다.
또한 타사 도구에 액세스할 수 있는 경우 ncdu
확장 정보 모드 활성화를 사용하여 추가 속성별로 정렬하면 mtime
출력을 파일로 내보낼 수 있습니다.