편집하다:
여러 머신이 있고 메인 디스크의 전체 스토리지 크기를 가져와야 합니다. 내가 겪고 있는 문제는 일부 컴퓨터에서 내 디스크 이름이 /dev/sda
또는 이라는 것입니다 /dev/md126p3
. 이러한 모든 시스템에서 디스크 크기를 어떻게 안정적으로 얻을 수 있습니까?
기계 1:
root@maximus:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md126p3 20G 3,6G 15G 20% /
/dev/md126p2 1008M 89M 868M 10% /boot
/dev/md126p1 99M 238K 99M 1% /boot/efi
기계 2:
root@firefly:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 30G 2,8G 26G 10% /
/dev/sda2 1008M 61M 896M 7% /boot
/dev/sda1 20M 132K 20M 1% /boot/efi
기계 3:
root@backup:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 7,3T 297G 6,6T 5% /
/dev/md1 733M 57M 623M 9% /boot
기계 4:
root@vmfarm1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md126p3 18G 8,0G 9,3G 47% /
/dev/md126p2 190M 87M 90M 50% /boot
/dev/md126p1 119M 121K 119M 1% /boot/efi
기계 5:
root@p12:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-1 6.3T 4.8T 1.3T 80% /
/dev/sda2 237M 60M 166M 27% /boot
기계 6:
root@accountant:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 415M 19G 3% /
/dev/mapper/acc-root 20G 415M 19G 3% /
/dev/md0 1012M 70M 891M 8% /boot
/dev/mapper/acc-home 20G 313M 19G 2% /home
/dev/mapper/acc-opt 20G 6.2G 13G 33% /opt
/dev/mapper/acc-usr 20G 1.2G 18G 7% /usr
/dev/mapper/acc-var 20G 802M 18G 5% /var
/dev/mapper/acc-tmp 20G 172M 19G 1% /tmp
기계 7:
root@pve:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-0 95G 74G 16G 83% /
/dev/fuse 30M 16K 30M 1% /etc/pve
기계 8:
root@barclay:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md1p1 2.6T 77G 2.4T 4% /
/dev/md0 186M 36M 141M 21% /boot
오래된 질문:
나는 fdisk -l
전체 섹터 값을 얻으려고 노력하고 있습니다. 데비안 운영체제를 사용하세요. fdisk -l은 많은 정보를 표시합니다. 특정 단어/숫자를 제거하는 방법을 찾아야 합니다. 기본적으로 최대 "섹터" 수가 필요합니다. 내 현재 컴퓨터에 대해.
Device Start End Sectors Size Type
/dev/sda1 3072 6143 3072 1.5M BIOS boot
/dev/sda2 6144 506879 500736 244.5M Linux filesystem
/dev/sda3 506880 14064672767 14064165888 6.6T Linux filesystem
(이것은 다른 컴퓨터에서도 다릅니다)
그 다음에
fdisk -l | grep Linux | tail -1
나에게 주세요. /dev/sda3 506880 14064672767 14064165888 6.6T Linux filesystem
그러나 그것은 내가 필요한 전부가 아닙니다. 내 컴퓨터 중 하나에서 이것을 잘라냈지만 "마지막에서 네 번째"를 잘라내거나 제거하는 방법을 찾을 수 없습니다.
내 테스트 머신에서는 이 작업을 수행할 수 있었습니다.
fdisk -l | grep Linux | cut -d " " -f3 | tail -1 | awk '{$1=$1/(1024^2); print $1;}' | awk '{print int($1+0.5)}' | awk '{ print $1"GB" }'
답변1
디스크 크기를 얻으려면 다음 값을 사용할 수 있습니다.
cat /sys/block/sda/size
기본 파티션을 식별하려면 다음을 수행할 수 있습니다.
df | grep -E "\/$" | cut -d' ' -f1 | sed 's/[0-9]*//g'
/
제 경우에는 마운트된 디스크의 이름이 표시됩니다 /dev/sda
.
그 후에 스크립트를 작성하는 방법은 귀하에게 달려 있습니다.
오래된 답변
이 경우 간단히 다음을 사용합니다 /sys
.
cat /sys/block/sda/subsystem/sda3/size
다음을 사용하여 섹터 수를 제공합니다.
cat /sys/block/sda/subsystem/sda3/start
시작 섹터 번호를 가져옵니다.
fdisk
이는 항상 정확히 동일하지 않은 항목을 구문 분석하는 것보다 훨씬 쉽습니다. 이 값은 간단한 패턴을 사용하여 쉽게 얻을 수 있습니다.
cat /sys/block/sda/subsystem/sda*/size
답변2
노력하다
fdisk -l | awk '/Linux/ { s=$(NF-4) ;} END { print s}'
어디
/Linux/
Linux 행이 선택됩니다.{ s=$(NF-4) ;}
네 번째 필드를 마지막 필드로 설정합니다($4
이 경우에도 사용할 수 있습니다.END
마지막으로 (더 이상 입력이 없습니다){ print s}
인쇄하세요.
편집하다:
귀하의
grep ..| cut .. | awk^n
코드는 다음과 같이 단축될 수 있습니다.awk '/Linux/ { s=$4/(1024^2) ;} END { printf "%d Gb\n",s}'
/2
섹터는 일반적으로 512바이트이므로 Gb를 얻으려면 다른 섹터(2로 나눔)를 추가해야 할 수도 있습니다 .
답변3
답변4
블록 장치를 df에 전달하는 것 외에도 마운트 지점을 전달할 수도 있습니다. 실제로 이것은 기본 동작입니다.
# df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 8191416 6002396 2088840 75% /
출처: df 맨페이지:
df는 각 파일 이름 인수를 포함하는 파일 시스템의 여유 디스크 공간 크기를 표시합니다.