有几件事:
- 你根本不需要
grep
,awk
完全有能力做它自己的正则表达式的东西。
/
如果您在输出中搜索df
,您可能会得到大多数行,因为大多数坐骑中都有/
某个位置。如果你只想要根挂载点,你可以使用<space>/$
.
- 检查这
4
是正确的字段编号,在我的盒子上是5
.
- 在任何情况下,该字段的形式
55%
都不会被视为数字。你可以用gsub
它来摆脱它。
考虑到这一点,以下代码段可用于获取百分比:
df -h | awk '$0 ~ / \/$/ { gsub("%","",$5); print $5 }'
而且,顺便说一句,我不是shell 脚本中的 here-docs 的忠实粉丝,因为它要么(1)搞砸了我很好的缩进文件;EOF
或(2)让我在尝试记住允许缩进字符串的各种语法选项时花费半个小时:-)
我更喜欢这样的东西:
(
echo Your root partition remaining free space is critically low: Used: ${CURRENT}%
) | mail -s "CENTOS-6 localhost 10.10.1.238 Disk Space Alert" sss@abc.net
特别是因为这意味着我可以在子 shell 中放置任意复杂的命令,以在邮件消息中生成我想要的任何信息(而不仅仅是简单的文本替换)。
所以,最重要的是,我会看更多类似的东西:
#!/usr/bin/env bash
# Config section.
LIMIT=75
# Code section.
CURR=$(df -h | awk '$0 ~ / \/$/ { gsub("%","",$5); print $5 }')
if [[ ${CURR} -ge ${LIMIT} ]] ; then
(
echo "Your root partition remaining free space is critically low: Used: ${CURR}%"
) | mail -s "CENTOS-6 localhost 10.10.1.238 Disk Space Alert" sss@abc.net
fi