将crontab stdout重定向到stdout而不是默认电子邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将crontab stdout重定向到stdout而不是默认电子邮件相关的知识,希望对你有一定的参考价值。

默认情况下,crontab作业stdout被发送到crontab用户的电子邮件,就像crontab文件在说明中所述:

# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).

我想使用slacktee和使用(tee)一样在crontab运行的脚本内发布消息。在其他脚本中(通过将它们放在/etc/cron.daily/目录中每日安排)我这样做:

echo "New message!" | slacktee -i "tada" -c "messages"

当它们运行时,没有问题。但是在我的自定义预定脚本中,虽然它们运行正常但我看不到松弛的消息。

我的工作每四个小时开始一次这个安排:

* */4 * * * /scripts/mysql_backup.sh

我尝试了很多重定向(在脚本内部,在cron命令中),但任何事情似乎都有效。

如何在自定义的自定义脚本中使用slacktee?

编辑:

我有点迟到了,感谢您的所有时间。

@PhilDenfer不,slacktee不会在/ tmp上记录任何内容。 @Gedge我尝试过sudo echo "test" | slacktee.sh并且它有效。也使用su然后做echo "test" | slacktee.sh作品。 @ isp-zax cron作业成功运行,因为脚本会备份数据库。

重定向stderr我得到了slacktee.sh command not found。所以使用slacktee.hs作为root工作但不是当root用户在crontab预定作业中使用它时(在每日预定脚本中我成功使用了slacktee)。为什么?

答案

重定向stderr我找不到slacktee.sh命令。所以使用slacktee.hs作为root工作但不是当root用户在crontab预定作业中使用它时(在每日预定脚本中我成功使用了slacktee)。为什么?

因为用户root和用户cron的PATH变量是不同的。

而不是只是'松弛'使用完整的路径,即/usr/local/bin/slacktee,它应该工作正常。

以上是关于将crontab stdout重定向到stdout而不是默认电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

将stdout和stderr重定向到一个文件,也重定向到linux中的控制台[重复]

如何将“stdout”重定向到标签小部件?

sh 将stderr重定向到stdout

sh 将stderr和stdout重定向到文件

将sderr重定向到bash中的stdout

使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用[重复]