Linux 웹 서버에서 어떤 파일이 공간의 80 %를 차지하는지 어떻게 알 수 있습니까?


15

드라이브가 지속적으로 채워지고 있습니다. 당신은 당신이 할 수있는 모든 여분의 임의 파일을 찾아 냈습니다. 코어 덤프 파일을 grep하고 불필요한 백업을 제거했습니다.

다음 행동은 무엇입니까?

실제 서버에는 10GB의 웹 사이트 파일이 있으며 OS는 10GB를 넘지 않아야하므로 50GB (가상) 드라이브를 채우는 내용을 어떻게 추적합니까?


답변:



23

분명히 더 정교한 방법이 있지만 내가 기억하는 방법은

du --max-depth = 1 -h /

이제 대부분의 공간을 사용하는 디렉토리를 가져와 (du --max-depth=1 -h /yourdir)범인을 찾을 때까지 더 깊이 들어가십시오.
출력을 크기별로 정렬하고 사람이 읽을 수있는 형식을 신경 쓰지 않으려면 할 수도 있습니다du --max-depth=1 /your_dir | sort -n


네. "du -S | sort -n -r | less"와 거의 같은 일을합니다. 나는 htop처럼 보이고 cron'd mlocate처럼 보이는 프로그램을보고 싶지만 실행되면 시스템의 파일에 대한 정확하고 현대적인 정보를 얻었습니다.
Gareth

1
웹 서버에서 /에서 시작하는 대신 http_root에서 시작하십시오. 성공이 없으면 '/'로 갈 수 있습니다. '/'에서 du를 실행하는 디렉토리는 많은 시간이 걸립니다.
Saurabh Barjatiya

4

나는 그놈 프로그램 baobab을 사용합니다. 이것을 데스크탑에서 실행할 수 있으며 SSH를 통해 서버에 연결할 수 없습니다. 디스크 공간 사용량을 쉽게 읽을 수있는 그래픽 맵을 보여줍니다. 그놈 아래에 "디스크 사용량 분석기"로 설치됩니다



2

df -k는 어떤 fs가 문제인지 보여줍니다. 그런 다음 최상위 디렉토리로 cd하고 du -xk | 정렬 -n | tail -25 이것은 9 일 이전에 정렬 된 상위 25 디렉토리를 표시하며 x를 d로 바꿉니다.


예, @Marie Fischer의 답변에서 방금 언급 한 것과 비슷합니다. 인간에게 -h 대신 -k (블록 크기)를 사용하는 이유는 무엇입니까?
Gareth

-k는 모든 크기가 kb로보고되도록 사용됩니다. 이것은 정렬하는 동안 20mb 전에 10kb를 넣는 정렬에 유용합니다.
Saurabh Barjatiya

1

파일을 쓰는 동안 파일을 삭제할 수 있으므로 파일을 만들지 않고 작성 프로세스가 실행되는 동안 디스크 공간을 사용합니다.

일반적인 도구로는 찾을 수 없습니다. lsof를 사용하여 파일을 연 프로세스를 조사 할 수 있습니다.


나는 /usr/sbin/lsof | grep deleted이것을 얻는 데 사용 합니다.
Kevin M

0

시스템에서 소프트웨어를 실행할 수 있다면 xdiskusage 는 공간 을 차지하고 있는 디렉토리 / 파일을 그래픽으로 보여줍니다. 매우 유용합니다.

나는 KDE가 비슷한 것을 포함하고 있다고 생각합니다.

텍스트 전용이고 추가 소프트웨어를 설치할 수없는 경우 창의적으로 사용하면 문제 du가 해결 될 수 있습니다.


0
  1. 웹 서버 홈 디렉토리 (apache의 홈 디렉토리)로 cd
  2. "du -a | head -30 | sort -nr"명령을 실행하십시오.
  3. 그것은 당신에게 30 가장 큰 디스크 소비 파일 / 디렉토리를 제공합니다
  4. 당신은 그것들을 찾아서 삭제할 수 있습니다 (유용하지 않은 경우)

head및 의 순서를 변경하지 않으면 작동하지 않습니다 sort. 또한 서식 기능을 사용해야합니다.
kasperd

0

다음 명령을 사용하여 너무 많은 공간을 차지하는 파일 또는 폴더를 찾을 수 있습니다.

예를 들어 현재 폴더에서 가장 큰 상위 20 개 디렉토리를 표시하려면 다음 한 줄짜리를 사용하십시오.

du -ah . | sort -rh | head -20

또는:

du -a . | sort -rn | head -20

현재 디렉토리에서 상위 20 개의 가장 큰 파일 (재귀 적으로) :

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

또는 사람이 읽을 수있는 크기로 :

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

제대로 OSX / BSD에 작업에 두 번째 명령은 (등 sort이없는 -h), 당신은 설치해야합니다 sort에서 coreutils. 그런 다음 bin 폴더를에 추가하십시오 PATH.

이 명령을 별칭으로 정의 할 수 있습니다 (예 : rc 파일에 추가 .bash_profile).

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

그런 다음 생각되는 폴더 bigbig-files내부에서 실행 하십시오 (예 :에서 /home).


0

다음은 데이터베이스 서버에서 불량 프로세스를 추적하기 위해 함께 모은 것입니다. rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

약간 엉뚱하고 강력하지는 않지만 다음과 같이 작동합니다.

  1. 현재 디렉토리의 재귀 트리 목록을 생성
  2. 5 초 기다립니다
  3. 다른 목록을 생성
  4. 두 출력을 비교
  5. 크기가 변경된 파일을 퓨저
  6. ps -lFp 프로세스가 소유 한 파일을 보여줍니다

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.