2015-10-06 51 views
-1

低于我的shell脚本发送不停,即使没有被已经见过参数:我的剧本送不停

MAX=85 
EMAIL="[email protected]" 
PART=sda1 
USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1` 
if [ $USE -gt $MAX ]; then 
    echo "Percent used: $USE of /" | mail -s "Server is running out of disk space" $EMAIL 
fi 
+0

我无法重现这一点。将'set -x'添加到脚本中。 – Cyrus

+1

也是'grep | awk |切“是反模式; http://www.iki.fi/era/unix/award.html#grep – tripleee

回答

0

此服务器中运行AWS。我看着电子邮件的标题,看到一个奇怪的IP地址。我在AWS中追踪了IP,并发现我认为发送邮件的原始服务器的副本。它是由一个现已解散的供应商克隆的。所以,我刚刚终止了该服务器,并解决了问题! :D

这是一个非常好的社区!人们在技术上非常有天赋,非常善于分享。保持它,伙计们!我感谢所有那些试图帮助我的人。谢谢!

0

此代码工作我的系统上。也许检查一下,以确保dh的输出始终加起来大于85.你可能会有更多的成功,而不是对dh使用-h参数,而是以字节为单位检索实际的数字,然后对其进行操作。

#!/bin/sh 

# Change this number accordingly as usual 
MAX=100000000 
EMAIL="[email protected]" 
PART=sda1 
USE=$(df | grep $PART | awk '{ print $3 }') 

if [ "$USE" -gt "$MAX" ] 
then echo "Successful" 
    #echo "Percent used: $USE of /" | mail -s "Server is running out of disk space" $EMAIL 
fi 

或为百分比也许尝试POSIX shell字符串切割:

#!/bin/sh 

MAX=85 
EMAIL="[email protected]" 
PART=sda1 
USE=$(df | grep $PART | awk '{ print $5 }') 

if [ "${USE%%%}" -gt "$MAX" ] 
then echo "Successful" 
    #echo "Percent used: $USE of /" | mail -s "Server is running out of disk space" $EMAIL 
fi