幾件事情:
- 你不需要
grep
可言,awk
是非常適合做它自己的正則表達式的東西。
- 如果在
df
輸出搜索/
,你可能會得到最行作爲最坐騎有/
某處他們。如果您只需要根掛載點,則可以使用<space>/$
。
- 檢查
4
是正確的場數,在我的箱子是5
。
- 在任何情況下,該字段的形式爲
55%
這將不會被認爲是數字的。你可以使用gsub
來擺脫它。
考慮到這一點,下面的代碼片段可用於獲取百分比:
df -h | awk '$0 ~/\/$/ { gsub("%","",$5); print $5 }'
而且,正如順便說一句,我不認爲大的粉絲這裏的文檔在shell腳本中,因爲它或者(1)搞砸了我很好的縮進文件; (2)讓我燒一個半小時,而我努力記住各種語法選項,這將允許縮進EOF
串:-)
我更喜歡這樣的:
(
echo Your root partition remaining free space is critically low: Used: ${CURRENT}%
) | mail -s "CENTOS-6 localhost 10.10.1.238 Disk Space Alert" [email protected]
特別因爲那意味着我可以在子外殼中放置任意複雜的命令,以便在郵件消息中生成任何我想要的信息(而不僅僅是簡單的文本替換)。
因此,底線,我會看更多的東西一樣:
#!/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" [email protected]
fi
您的當前值不是數字,所以你不能使用> =操作就可以了(它包含非數字後綴是人類可讀的,正如-h運算符所要求的那樣)。或者在你的情況下,它是第四列的百分比 - 它會有'%'符號(這是我的情況的第五列) – keltar