Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 计算给定分区已用磁盘空间百分比的bash脚本_Linux_Bash - Fatal编程技术网

Linux 计算给定分区已用磁盘空间百分比的bash脚本

Linux 计算给定分区已用磁盘空间百分比的bash脚本,linux,bash,Linux,Bash,我有一个bash脚本,用于计算给定分区的已用磁盘空间百分比: df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); } df-k$devname | grep-v^File | awk'{printf(“%i”,$3*100/$2);} 它在具有长名称的分区上不起作用,因为该名称会将其他列推到下一行,如何修复此问题 df Filesystem 1K-blocks Used Availabl

我有一个bash脚本,用于计算给定分区的已用磁盘空间百分比:

df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); } df-k$devname | grep-v^File | awk'{printf(“%i”,$3*100/$2);} 它在具有长名称的分区上不起作用,因为该名称会将其他列推到下一行,如何修复此问题

df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup60-ROOT 2865493440 2222006740 497927968 82% / tmpfs 30913808 0 30913808 0% /dev/shm /dev/sda1 495844 103347 366897 22% /boot df 已使用的文件系统1K块可用使用%已安装在 /dev/mapper/VolGroup60 ROOT 2865493440 2222006740 497927968 82% / tmpfs 30913808 0 30913808 0%/dev/shm /dev/sda1 495844 103347 366897 22%/boot
df
-p
(可移植性)选项使用符合posix的输出格式,并将所有内容保持在一行中。您还可以使用简化
awk
部分。

而不是解析整个“表”,您可以使用
--output
参数直接以百分比形式输出用法(有关详细信息,请参阅):

这应该更容易过滤

例如,通过在Bash 4中使用
readarray
创建一个数组:

$ readarray -t -s 1 percentage < <(df -k --output=pcent /dev/sda1)
$ echo "${percentage[0]// /}"
13%

查看
df
的其他选项,有一个选项可以使所有内容保持在同一行(可能是其他属性的副作用)。祝您好运。+1您的解决方案使我重新阅读了
字段列表中不同
输出参数的手册页。好东西。嘿,谢谢-根据我的经验,许多以某种表格形式提供数据的工具也提供了一个参数来收集数据的特定部分。例如,也适用于
smartctl
nvidia smi
。)
$ readarray -t -s 1 percentage < <(df -k --output=pcent /dev/sda1)
$ echo "${percentage[0]// /}"
13%
$ percentage=($(df -k --output=pcent /dev/sda1))
$ echo "${percentage[1]}"
13%