파일 시스템이 매우 긴 경우 "df -h"를 사용하여 디스크 공간(사용 가능)을 얻는 방법

파일 시스템이 매우 긴 경우 "df -h"를 사용하여 디스크 공간(사용 가능)을 얻는 방법

콘솔을 통해 사용 가능한 디스크 공간을 찾으려고 합니다.

df -h | awk '$NF == "/" { print $4 }'원하는 출력을 얻었음 을 알았습니다 .

[root@tmpe2etstmsdc01 ~]# df -h
Filesystem                                                 Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root                                542G   22G  492G   5% /
tmpfs                                                      127G     0  127G   0% /dev/shm

효과가있다

[root@tmpe2etstmsdc01 ~]# df -h | awk '$NF == "/" { print $4 }'
492G

이것은 오래되면 Use%가치를 줄 것입니다Filesystem

[root@ldrnr-tlsmsdc16 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root
                   16G   16G     0 100% /
tmpfs             1.9G     0  1.9G   0% /dev/shm

Use%여기서는 대신 명령이 제공됩니다 .Avail

[root@ldrnr-tlsmsdc16 ~]# df -h | awk '$NF == "/" { print $4 }'
100%

Avail어떻게 하면 이 상태 에 들어갈 수 있나요 ?

답변1

노력하다:

stat -fc %a /mountpoint

%a슈퍼유저가 아닌 사용자가 사용할 수 있는 블록입니다. %f총 여유 블록 에 사용됩니다 . 또한 이는 %s블록 크기이므로 사용 가능한 총 바이트 수를 원하는 경우 다음과 같이 말할 수 있습니다.

stat -fc '%f * %s' /mountpoint | bc

보다추가 옵션은 stat(1) 매뉴얼 페이지를 참조하세요.. 일반적으로 stat(1)구문 분석 가능한 출력보다 사용하기가 더 쉽습니다 df.

답변2

GNU coreutils를 사용하면 다음 명령을 사용할 수 있습니다.

df -h --output=avail / | sed '1d'

Avail에 마운트된 파일 시스템에 대한 행만 인쇄합니다 /. 불행히도 df헤더 행을 비활성화하는 옵션이 없으므로 sed첫 번째 행이 제거되었습니다.

답변3

awk를 사용해 볼 수도 있습니다.

df -h|tail -n +2 | awk '{if ($5 == "/")print $3; }'

또는:

df -h|tail -n +2 | awk '{if ($6 == "/") print $4; }'

df 출력에 따라 다릅니다.

답변4

df -h | awk '$NF == "/" { if($1 ~ /^[0-9]/) print $3; else print $4 }'

또는

df -h | awk '$NF == "/" { if($5 == "/") print $3; else print $4 }'

관련 정보