aix - AIX 中的剪切命令
问题描述
我们想通过在 AIX 7 上使用 shell 脚本来自动化磁盘清理过程。我们需要编写一个 shell 脚本来根据磁盘百分比清理磁盘
df -Pg 的样本输出
user:host:/:>df -Pg
Filesystem GB blocks Used Available Capacity Mounted on
/dev/hd4 5.00 0.05 4.95 2% /
/dev/hd2 6.00 3.63 2.37 61% /usr
/dev/work1lv 1074.50 377.46 697.04 36% /work1
... some lines are ommitted and it continues
我们只想使用 cut 命令检查容量百分比 我们不能只列出作为参数给 cut 命令 -f 的第 5 列。如果我们成功正确显示,我们将继续使用 shell 脚本清理部分。
df -Pg | cut -f5 -d' '
上面命令的输出不是我们所期望的。
解决方案
该cut
命令认为每个分隔符都开始一个新字段;如果您告诉它根据空格和制表符分隔输出,则每个空格都会创建一个新字段。这就是为什么你得到意想不到的输出。
打印字段 5 可以更直接地使用 来完成awk
,它将任意数量的连续空格组合到一个分隔符中:df -Pg | awk '{print $5}'
. 但是,您仍然有两个问题需要解决:跳过标头并考虑在其挂载点中有空间的文件系统。您可以相当容易地跳过标题,因为它是输出的第一行:df -Pg | awk 'NR > 1 {print $5}'
,但是处理剩余的字段需要更多的工作。
我建议您对df
命令使用不同的选项来请求具有特定字段的以冒号分隔的输出:df -c -F %z %m
. 该-F
选项自动包含文件系统设备和块字段,因此您希望跳过这些。我们仍然想跳过标题,所以我们最终得到:
df -c -F %z %m | sed 1d | cut -d: -f3,4
... 删除第一行,然后只输出第三个和第四个冒号分隔的字段。这应该为您的监控程序提供相关信息。根据您正在执行的操作,如果您需要检查可用卷组空间,您可能需要包含字段 1(设备)。请注意,df
输出会在挂载点字段的开头添加一个空格(这可能是请求以冒号分隔的输出及其解析 -F 参数的副作用)。另请注意,您可能会看到网络安装的文件系统;如果您只想查看本地文件系统,请添加-T local
选项:
df -T local -c -F %z %m | sed 1d | cut -d: -f3,4
推荐阅读
- postgresql - 如何将触发器与 3 个不同的表一起使用
- vbscript - 从 Outlook 保存具有特定主题的电子邮件的附件
- sparql - 如何检查三元组是否存在?
- python - 即使我将 pytest.py 移动到 /bin,也找不到命令“pytest”
- yii - yii2 使用会话从 yii 获取用户身份验证
- excel - excel显示链接单元格的单元格地址NOT值
- javascript - 为复杂的验证编写正则表达式
- java - Java中的金字塔模式,星号后跟下划线
- cumulocity - 如何使用 c8y 中的事件处理脚本在数据资源管理器图形模式表中显示自定义信息
- git - 如何将 git 分支获取到先前的提交并将其作为新的 HEAD 推送?