为返回 exit 2 的 if 条件的错误语句写入日志

为返回 exit 2 的 if 条件的错误语句写入日志

我有一个脚本每 5 分钟运行一次,条件子句中有两个退出。

#!/bin/bash
date=$(date +%Y)
if [ $date -eq '2014' ]
then
    echo "Current year is $date"
    exit 0
else
    echo "Current year is not $date"
    exit 2
fi

如何指定仅在退出 2 时写入日志?这在 crontab 中可能吗?

5 * * * * /home/user/script.sh >> script.log 2>> script.err

我已经明白了 “>>脚本.log”写入脚本的所有返回值和“ 2 >> 脚本.错误”仅当脚本运行不正确时才写入。所以我不知道是否有机会只写脚本中 exit 2 的位置。

答案1

要编写您的错误以stderr使用1>&2重定向:

echo "Current year is not $date" 1>&2

exit [number]指定返回代码[number].

也可以看看:

文件描述符

标准流

关于重定向

答案2

您可以使用logger( man logger),因为它是从cron.而且您实际上并不需要退出代码,因为您没有对它们执行任何操作,至少在上面的代码片段中是这样。

#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
    logger -f script.log "Current year is not $date"
fi

相关内容