編集する:
複数のマシンがあり、メインディスクの合計ストレージサイズを取得する必要があります。私が経験している問題は、一部のコンピュータで私のディスク名がまたは/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
全体のセクター値を取得しようとしています。 Debianオペレーティングシステムを使用してください。 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
しかし、それは私が必要とするすべてではありません。私のコンピュータの1つでこれを切り取りましたが、「最後の4番目」を切り取ったり削除したりする方法が見つかりません。
私のテストマシンではこれを行うことができました。
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番目のフィールドを最後のフィールドに設定します($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 は、各ファイル名引数を含むファイルシステムの空きディスク容量を表示します。