`df -hl`에서 디스크 사용률을 인쇄하는 방법


12

df -hl크기, 사용률 및 사용 가능한 공간이있는 모든 파티션 목록 을 출력 한다는 것을 알고 있습니다.

나는의 비율로 단지 크기와 사용 출력을 원하는 경우 sda2sda3예를 들어, 어떻게, 리눅스 (우분투)를 확인하는 말을 정리해 나에게 보여 수 있을까?


1
아래의 답변은 모든 디스크를 파싱하는 대신 디스크를 df 명령 줄에 배치하는 데 사용하는 df 명령을 변경하여 단순화 할 수 있습니다. 즉 df -hl / dev / sda [23]
mdpc

답변:


11

들어 df계산 합계로, 사용 --totals옵션을 선택합니다. 일부 선택된 드라이브에 대해서만 총계를 원하면 인수로 지정하십시오.

예 (및 컴퓨터에서 출력)

이것은 모든 로컬 마운트의 합계입니다.

$ df --total -hl
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
none                  490M  660K  489M   1% /dev
none                  497M  1,5M  495M   1% /dev/shm
none                  497M  260K  496M   1% /var/run
none                  497M     0  497M   0% /var/lock
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  19G   12G  7,3G  62%

몇 개의 드라이브로 제한 (지정된 경로가 정확한 마운트 지점이 아닌 경우 가장 가까운 포함 마운트 지점이 사용됨 [끝의 참고 사항 참조] ) :

$ df -hl --total /home /fastdisk
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1              14G   12G  2,1G  85% /
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
total                  17G   12G  5,3G  69%

또는 dev이름 사용 :

$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             3,7G  418M  3,3G  12% /fastdisk
/dev/sdb1              14G   12G  2,1G  85% /
total                  17G   12G  5,3G  69%

추가 사용자 정의

'특별한'마운트를 제외한 모든 마운트를 나열하려면 -x옵션을 사용하여 파티션 유형별로 제외 할 수 있습니다 . -T옵션을 사용하여 유형을 표시하십시오.

개인적으로 대화식 사용을 위해 다음과 같은 bash 별칭을 사용 ~/.bash_aliases하여 '물리적'마운트를 제외합니다.

alias df='df -h -x devtmpfs -x tmpfs -x debugfs'

노트

마운트 지점 내에 경로를 지정하면 마운트 지점에 대한 정확한 경로를 지정하는 결과가 다른 형식으로 나타날 수 있습니다. 예를 들어, 랩톱에서 sshfs(로컬) 파일 서버를 마운트 하는 데 사용 합니다.

df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem            Size  Used Avail Use% Mounted on
johan@server:/        185G   58G  118G  33% /home/johan/.server-root
johan@server:/        1,9T  637G  1,2T  35% /home/johan/.server-root
johan@server:/        1,8T  1,1T  757G  59% /home/johan/.server-root

서버 루트 ( /)는에 마운트됩니다 ~/.server-root. 그러나 서버에서는 디스크가에 마운트되어 /disks/*있으며 df(노트북의 경우) 알지 못합니다.

분명히 df적절한 경로를 제공하는 경우, 서버의 서로 다른 마운트의 디스크 사용량을 나열 할 수 있습니다. 그러나, 그것은 "에 장착"같은 "파일 시스템"을 보여줍니다 모든 경로에 대한 이후 (내가 생각) 만 마운트 지점 (이 관련된입니다 sshfs로컬 커널 마운트) 마운트 테이블을.


또 다른 것은 : 실제로 질문과 관련이 없지만 질문에 대한 이전 답변 과 관련이 있습니다.

awk이전에 게시 된 답변과 마찬가지로 스크립트 (또는 유사한)로 숫자를 더하는 것은 플래그를 사용할 때 좋은 생각 이 아닙니다-h . 특수 처리가 필요하기 때문입니다. 한 행과 다른 행에 size+=$2;있는 필드를 수행 하고 유용한 정보를 얻을 수는 없습니다.418M12G

함께 예를 들어 awk, 추가 500M10.2G수율

$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2

무엇의 510.2?

여기에는 분명히 문제가 있습니다. 따라서 출력 (및 사람이 읽을 수있는 숫자를 사용할 수있는 다른 것 )에 대한 (자동화 된) 계산을 수행 할 때 기억해야 할 팁 입니다. 플래그를 사용 하지 말고 계산 스크립트에 대한 입력이 정규화되어 있는지 (예 : 바이트, 블록, KB 등) 확인하고 마지막에 '디스플레이 스케일링' 을 수행하십시오. 대부분의 스크립팅 및 프로그래밍 언어에서 다음과 같은 것을 추가하는 것은 어렵지 않습니다.df -h

If value < threshold Then
  print (value),"B"
Else If value < 1024*threshold Then
  print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
  print (value/1024/1024),"MB"
(and so on...)

여기서 value 는 바이트 단위이고 threshold 는 1000 정도의 값입니다.이 방법의 요점은 원하는 범위에서 원하는 유효 숫자의 숫자로 인쇄 된 값 (접두사 제외)을 생성하도록 쉽게 조정할 수 있다는 것입니다. 고르는. -h형식이 종종 고정되는 스위치가있는 표준 유틸리티의 경우와 비교됩니다 .

물론,이 계산은 종종보다 효율적이고 우아하게 만들어 질 수 있지만, 그것이 쓰여진 특정 언어에 대한 질문입니다. 솔직히, 지금 만 실행되고 대화식으로 볼 수 있는 사용자 스크립트 에서 사용된다면 일부 정보에서 효율성은 실제로 문제가되지 않습니다.


4

난 당신이 둘의 합을 원 생각 size하고use%

 df -hl | grep 'sda2\|sda3' | awk 'BEGIN{print "Size","Use%"} {size+=$2;percent+=$5;} END{print size,percent}' | column -t

위와 동일합니다.
user32398

@ user32398 : 차이 친구가 있습니다.
pradeepchhetri

이 질문에 대한 대답의 끝에서 나는이 질문에 단순한 awk 접근 방식을 사용하지 않는 이유에 대해 조금 자세히 설명했습니다 size+=$1. 이 방법은의 -h옵션 과 실제로 호환되지 않습니다 df.
요한 전자

2

다음과 같은 도구를 사용합니다 awk.

df -hl | awk '/^\/dev\/sd[ab]/ { sum+=$5 } END { print sum }'

어디:

  • /^\/dev\/sd[ab]//dev/sda또는로 시작하는 행만 필터링하기위한 패턴입니다./dev/sdb
  • { sum+=$5 } 위 패턴과 일치하는 다섯 번째 필드를 추가하십시오.

유용한 awk참고 자료는Awk.info 위키 .


%를 합산하는 것으로 충분하지 않다고 생각하지만 감사합니다.
user32398

1
sudo df -hl | grep 'mountdirname' | awk '{print $5}'

1
그는 요구 size, % usedavailable. %만이 아니라 또한 @mdpc는 드라이브를 싱킹하는 더 좋은 방법이 있지만 awk를 패턴 화하려는 경우 다음과 같이 할 수 있습니다. df -hl | awk '/sda2/{print $2,$5,$4}'
jesse_b

0

당신이 경고와 함께 그것을 원한다면, 나는 IFTTT, Telegram And WebHooks (모두 무료)

#!/bin/bash
diskusage=$(df -H | grep -vE '^Filesystem|tmpfs|cdrom|mmcblk0p1' | awk '{ print $5 " " $1 }'| cut -f1 -d '%')
hostname=$(hostname)
tolerance=(85)
date=$(date)

if [[ "$diskusage" -gt "$tolerance" ]]
        then
        echo ""
        echo total disk usage is $diskusage%
        echo ""
        curl -X POST -H "Content-Type: application/json" -d '{"value1":"--Alert--","value2":"Total disk usage is '$diskusage'% ","value3":"Host information: '$hostname' "}' https://maker.ifttt.com/trigger/{alert}/with/key/PutYourKeyHEre
fi
echo ''
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date
echo Disk usage is $diskusage%. The tolerance is $tolerance%. No alert fired $date >> /var/log/IFTTT/checkdiskspace.log
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.