1

我有一个 bash 脚本来检查我们的 RAID 系统的状态。

#!/bin/bash
EMAIL_ADD=webmaster@whatever-i-want.mail

zpool status -x | grep 'all pools are healthy'

if [ $? -ne 0 ]; then
    /bin/date > /tmp/zfs.stat
    echo >> /tmp/zfs.stat
    /bin/hostname >> /tmp/zfs.stat
    echo >> /tmp/zfs.stat
    /sbin/zpool status -x >> /tmp/zfs.stat
    cat /tmp/zfs.stat | /usr/bin/mail -s "Disk failure in server : `hostname`" $EMAIL_ADD
fi

当我手动运行脚本时它可以工作,所以我决定将此脚本作为 cronjob 运行。但是 cronjobs 每次都会发送邮件。我真的希望你能帮我解决这个问题。

4

1 回答 1

0

用 $ 测试退出状态?不是一个好习惯,更多信息请转到测试退出值。您应该用 COMMAND(zpool ...) 替换您的 if 条件,如下所示:

if ! zpool status -x | grep 'all pools are healthy';then
...
fi
于 2015-06-24T08:30:45.847 回答