ドライブ名なしでスペースの詳細を取得する

ドライブ名なしでスペースの詳細を取得する

ドライブ名なしでドライブスペースの詳細を取得する方法はありますか?たとえば、出力

df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   39G   26G  61% /u01
/dev/sda2              30G  5.8G   22G  21% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm
/dev/mapper/vg3-KPGBKUP4
                   10T  7.6T  2.5T  76% /KPGBKUP4

私が望む出力は次のとおりです。

20G   15G  4.2G  78% 
68G   39G   26G  61% 
30G  5.8G   22G  21% 
99M   19M   76M  20% 
48G  8.2G   39G  18% 
10T  7.6T  2.5T  76%

私がこれをしたいのはなぜですか?サーバーが複数あり、毎日レポートを作成する必要があります。これで私の作業量は10分の1に減ります。どんな提案でも高く評価いたします。

答え1

GNU coreutils 8.21から始める(変更ログ)、オプションがdfあります--outputsedヘッダーをトリミングする場合:

df -h --output=size,used,avail,pcent | sed 1d

答え2

ファイルシステムとマウントポイントにスペース文字が含まれていないとし、次のことを試してください。

df -hP | awk 'NR>1 { $1=$6="" ; print }' | column -t

df -hP長いファイルシステム名の改行なしでファイルシステム統計を一覧表示します。

awk 'NR>1 { ... }'dfヘッダー行をスキップするには、指定された操作を2行目以下に制限します...

-actionは不要なフィールドをawk0{ $1=$6="" ; print }にし、残りのフィールドを印刷します。

を使用すると、{ print $2,$3,$4,$5 }同じことが行われます。

column -t出力全体をきれいなテーブルにまとめます。


$ cat x
#!/bin/sh
echo '<testing inside a script>'
df -hP | awk 'NR>1 { $1=$6="" ; print }' | column -t
echo '</testing inside a script>'
$ chmod +x x
$ ./x
<testing inside a script>
71G    39G   29G    58%
1006M  0     1006M  0%
10M    208K  9,8M   3%
1006M  0     1006M  0%
</testing inside a script>
$ _

(コメントに記載されている問題が解決したら、もう一度削除します...)

答え3

findmnt -Do SIZE,USED,AVAIL,USE%

これは私の結果です。

 SIZE   USED AVAIL USE%
11.8G      0 11.8G   0%
11.8G  63.1M 11.7G   1%
11.8G   920K 11.8G   0%
11.8G      0 11.8G   0%
  12G   8.9G  2.7G  74%
11.8G 410.6M 11.4G   3%
   3G 584.4M  2.4G  19%
   3G 584.4M  2.4G  19%
 2.4G     4K  2.4G   0%
   0      0     0    -

だからまだ使っていないならfindmntレポートの場合、おそらくこれを行う必要があります。これより具体的な情報を得ることができます。しかし、上記の例では私が指定しました。-Do到着模倣df(オプションで説明されているように)出力列を制限します。到着列ヘッダーを削除して追加するだけです。-n文字列の解析は不要です。出力はアトミックです。

しかし、私の言葉をそのまま受け入れないでください。

man mount

...より強力で定義可能な出力を使用するためfindmnt(8) 特にスクリプトでは...

答え4

この試み:

$ df -h | awk 'NR==1{next}{for(i=2;i<NF;i++){printf("%s\t",$i)};print""}'
92G     5.2G    82G     6%  
2.9G    4.0K    2.9G    1%  
1.2G    932K    1.2G    1%  
5.0M    0       5.0M    0%  
2.9G    700K    2.9G    1%  
360G    53G     289G    16% 

関連情報