Perl을 사용하여 장착 볼륨에서 사용할 수있는 여유 공간을 어떻게 찾을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/536160

  •  22-08-2019
  •  | 
  •  

문제

파일을 타지 않으려 고합니다. Untarring 전에 나는 장착 된 볼륨에서 사용할 수있는 여유 공간을 알고 싶습니다. 계획은 충분한 공간이 없다면 나는 그것을 불러 일으키지 않을 것입니다! 그렇다면 Perl을 사용하여 장착 된 볼륨에서 사용할 수있는 여유 공간을 어떻게 찾을 수 있습니까? 그건 그렇고, 나는 Tar 및 Untar 용 Perl을 사용하고 있습니다.

모두가 말하고 있습니다 df 그리고 dh 그러나 이러한 명령은 마운트 포인트에서 작동하지 않습니다. 장착 지점에서 쓸 수있는 여유 공간을 찾고 싶다면 어떻게해야합니까?

도움이 되었습니까?

해결책

Shell 명령을 사용하여 Perl이 사용할 수있는 단일 K가없는 번호를 생성합니다.

UNTAR (아직없는 경우)을 원하는 디렉토리로 변경하고 실행하십시오.

df . | grep -v '^Filesystem' | awk 'NF=6{print $4}NF==5{print $3}{}'

또는 "."를 교체하십시오. 실제 마운트 포인트로.

Grep은 헤더를 제거하고 Awk는 분할 및 분할이없는 라인 모두에 사용할 수있는 킬로 바이트를 인쇄합니다.

이것은 다음 종류의 출력을 기반으로하므로 UNIX 출력이 다른 것을 출력하는 경우 조정해야 할 수도 있습니다.

Filesystem    1K-blocks      Used  Available  Use%  Mounted on
/dev/sda4     206434224  56965356  139065176   30%  /
varrun          1037296       132    1037164    1%  /var/run
varlock         1037296         0    1037296    0%  /var/lock
udev            1037296        68    1037228    1%  /dev
devshm          1037296        12    1037284    1%  /dev/shm
/dev/sda2         93327     43535      44973   50%  /boot
/dev/sdc1     155056484  29417456  117824612   20%  /media/extra160
gvfs-fuse-daemon
              206434224  56965356  139065176   30%  /home/pax/.gvfs

다른 팁

CPAN 모듈을 원할 것입니다 filesys :: dfportable.

내장 된 Linux 명령을 사용하여 결과를 얻을 수 있습니다.

my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);

노력하다 filesys :: df (POSIX 시스템) 또는 filesys :: dfportable (창도 또한). 둘 다 FS 통계를 열거하기 위해 기본 코드를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top