前段时间打算写个自动检测服务器磁盘是否有新瓷盘未分区和挂载,如果有就自动分区并挂载,但当超过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脚本里屏蔽非重要结果或提示,增加代码输出简洁美观

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐