Ubuntu 14.04:df 打印完整 UUID

Ubuntu 14.04:df 打印完整 UUID

df由于某种原因, Ubuntu 14.04 最近进行内核更新后,输出格式发生了变化。

当我运行df -hl显示所有已安装的文件系统时,输出如下所示:

bwvdnbro@wixie:~/Projects$ df -hl
Filesystem      Size  Used Avail Use% Mounted on
udev             12G  4.0K   12G   1% /dev
tmpfs           2.4G  1.3M  2.4G   1% /run
/dev/sda1       1.8T  1.3T  395G  78% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none             12G  168K   12G   1% /run/shm
none            100M   44K  100M   1% /run/user
/dev/md0p1      3.6T  1.4T  2.1T  40% /media/bwvdnbro/raid

但是,当我只想显示一个特定设备时,例如/,输出变为

bwvdnbro@wixie:~/Projects$ df -hl /
Filesystem                                              Size  Used Avail Use% Mounted on
/dev/disk/by-uuid/90cd5449-2cbf-4f32-89fe-d66e9fb5f8ee  1.8T  1.3T  395G  78% /

这很烦人,因为它使第一行太长而无法容纳在标准终端窗口中。

有没有什么方法可以控制输出格式,并在用于单个设备时Filesystem也显示它/dev/sda1而不是完整的 UUID ?df

编辑

因此,我对运行不同内核版本的不同节点进行了更多研究,结果发现问题不在于df,而在于读取的/proc/self/mountinfo文件df。对于旧内核版本,此文件包含设备名称,而较新版本则列出 UUID。

所以问题是:完整df -hl命令如何将 UUID 转换为设备名称,以及有没有办法在运行时重现这种行为df -hl /

答案1

我遇到了输出 UUID 的问题,因为 amazon 的 aws ec2 cloudwatch 脚本 mon-put-instance-data.pl 使用它作为其文件系统维度,并且我的警报在 apt-get upgrade 之后突然出现数据不足的情况:

这确实是 initramfs-tools 的一个错误。在 initramfs-tools - 0.103ubuntu4.3 之后重新启动,对我来说,即使在 coreutils_8.21-1ubuntu5.4 上,所有问题都得到了解决

https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1432871/comments/33

答案2

df我在 Ubuntu 14.04 上使用时遇到了同样的问题。

等待下一次更新将会解决问题,同时我制作了这个脚本来正确获取信息。

#!/bin/bash

DF="`df $1 $2 $3 $4 $5 $6 $7`"
UUID="`echo "$DF" | awk 'NR==2{print $1}'`"

if [ `echo "$UUID" | grep "/dev/disk/by-uuid/"` ]; then
    DEV="`readlink -m $UUID`"
    DF="`echo "$DF" | sed s,$(echo "$UUID"),$(echo "$DEV"), | \
        awk '
            NR==1{printf("%13s\t %10s\t %10s\t %7s %7s %7s %7s\n", ($1" "$2),$3 ,$4 ,$5 , $6, ($7" "$8), $9)}
            NR==2{printf("%13s\t %10s\t %10s\t %7s %7s %7s %7s", $1 , $2 , $3 , $4 , $5 , $6 , $7 , $8)}
        '`"
    echo "$DF"
else
    echo "$DF"
fi

我已经将此报告为df-coreutils 漏洞在启动板上

相关内容