前段时间打算写个自动检测服务器磁盘是否有新瓷盘未分区和挂载,如果有就自动分区并挂载,但当超过2000g的时候启用gpt分区后一直会有一个gpt处于测试阶段的警告,这个警告信息一直会打印到结果显示里面影响美观,于是想着把警告信息屏蔽,经过测试发现可以使用如下方法
在命令后追加 2>/dev/null可屏蔽标准错误
问题
fdisk -lz执行结果如下,可以看见sdc磁盘我选择了gpt分区,但会有警告,这个警告在后续的脚本中会重复打印,导致结果看起来不够明显和美观
[root@centoss129 shell]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000958d8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/sdc:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfd253171
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 2097151 1047552 83 Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 76A6B7EC-341A-47A3-8135-9A072559946A
# Start End Size Type Name
1 2048 10483711 5G Microsoft basic logic
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
解决办法
命令后追加 2>/dev/null 后如下,可以i看见sdc分区下的gpt告警信息被屏蔽了
[root@centoss129 shell]# fdisk -l 2>/dev/null
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000958d8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/sdc:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfd253171
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 2097151 1047552 83 Linux
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 76A6B7EC-341A-47A3-8135-9A072559946A
# Start End Size Type Name
1 2048 10483711 5G Microsoft basic logic
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
解释
2是linux预留的文件描述符,表示标准错误,与其类似的还有
1表示标准输出
例如想让执行的命令或者语句什么都不输出可以在命令或语句块后追加 >/dev/null 2>&1
>代表重定向,代表将前序步骤的输出放到后续的文件里
/dev/null 代表一个不存在的文件(黑洞),等同于删除
& 代表等同的意思,这里的2>&1 即代表错误输出的方式等同于标准输出,然标准输出被我们丢黑洞了,所以整句代码 >/dev/null 2>&1 的意思就是将前序命令或代码的输出全部丢黑洞,不显示任何执行结果,这中方式常用于shel脚本里屏蔽非重要结果或提示,增加代码输出简洁美观