/proc에서 파일 시스템의 여유 공간을 가져옵니다.

/proc에서 파일 시스템의 여유 공간을 가져옵니다.

/proc에 Ubuntu 명령: df -h와 같이 파일 시스템의 사용 가능한 공간을 표시하는 파일이 있는지 알고 싶습니다.

root@localhost:~$ df -h
S. files                               SIZE   USE   FREE  %USE MNT IN
udev                                   1,9G  4,0K   1,9G   1% /dev
tmpfs                                  384M  1,2M   383M   1% /run
/dev/sda3                               95G   58G    33G  65% /
none                                   4,0K     0   4,0K   0% /sys/fs/cgroup
none                                   5,0M     0   5,0M   0% /run/lock
none                                   1,9G  1,2M   1,9G   1% /run/shm
none                                   100M   84K   100M   1% /run/user

무료 칼럼이 필요해요.

/proc/partitions에서 파일 시스템별 전체 공간을 볼 수 있지만 여유 공간이 필요합니다.

아는 사람 있나요?

미리 감사드립니다.

답변1

일반적으로 /proc다음과 같은 정보가 포함됩니다.프로세스, 아니요파일 시스템. 앞에서 언급했듯이 statfs()시스템 호출에서 데이터를 구문 분석하려고 합니다 . df이 목적을 위한 표준 쉘 유틸리티가 있습니까? 그것을 사용하고 싶지 않은 이유가 있습니까?

너무 많은 데이터 열을 구문 분석하는 데 관심이 없다면 다음을 사용할 수 있습니다.

$ df -h --output=target,avail

답변2

이를 제공하는 시스템의 stat파일 시스템에서 이 명령을 사용할 수 있습니다.

예를 들어

stat -f -c %a /var    # Find the number of free blocks on /var
stat -f -c %S /var    # Determine the block size

사용 가능한 바이트 수를 얻으려면 하나씩 곱한 다음 적절한 천 단위로 나누어 결과 크기를 조정해야 합니다. 파일 시스템 결과를 MB 단위로 얻는 한 가지 방법은 다음과 같습니다 /var.

MBfree=$(( $(stat -f -c '%a * %S / 1024 / 1024' /var ) ))
echo "$MBfree"

답변3

다음 sysfs 함수를 통해 프로그래밍 방식으로 얻을 수 있습니다.

#include <sys/statvfs.h>

function: 
int statvfs(const char *path, struct statvfs *buf);

structure definition
struct statvfs {
               unsigned long  f_bsize;    /* file system block size */
               unsigned long  f_frsize;   /* fragment size */
               fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */
               fsblkcnt_t     f_bfree;    /* # free blocks */
               fsblkcnt_t     f_bavail;   /* # free blocks for unprivileged users */
               fsfilcnt_t     f_files;    /* # inodes */
               fsfilcnt_t     f_ffree;    /* # free inodes */
               fsfilcnt_t     f_favail;   /* # free inodes for unprivileged users */
               unsigned long  f_fsid;     /* file system ID */
               unsigned long  f_flag;     /* mount flags */
               unsigned long  f_namemax;  /* maximum filename length */

           };

답변4

다음 명령을 사용해 볼 수 있습니다.

df -Ph |awk 'NR >1{gsub("%","",$0);print }'| awk '{if($(NF-1)>60){print "Disk space issue exsists on partition "$NF" Used percentage is "$(NF-1)"% Used space is "$(NF-3) " out of total space "$(NF-4)}else{print "No disk space issue exsists on partition "$NF" Used percentage is "$(NF-1)"%"}}'

관련 정보