首页 > 解决方案 > 将 crontab 标准输出重定向到标准输出而不是默认电子邮件

问题描述

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

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

我想使用与使用 ( ) 相同的slackteetee在 crontab 运行的脚本中发布消息以松弛。在其他脚本中(通过将它们放在目录中每天安排/etc/cron.daily/)我这样做:

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

当它们运行时,没有问题。但是在我的自定义计划脚本中,尽管它们运行正确,但我没有看到任何关于 slack 的消息。

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

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

我尝试了许多重定向(在脚本内,在 cron 命令内),但似乎一切正常。

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

编辑:

对此我有点晚了抱歉,感谢您的所有时间。

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

重定向我得到的标准错误slacktee.sh command not found。因此,使用 slacktee.hs 作为 root 可以工作,但当 root 在 crontab 计划作业中使用它时(在每日计划脚本中我成功使用 slacktee),则不能。为什么?

标签: shellcronstdout

解决方案


重定向 stderr 我找不到 slacktee.sh 命令。因此,使用 slacktee.hs 作为 root 可以工作,但当 root 在 crontab 计划作业中使用它时(在每日计划脚本中我成功使用 slacktee),则不能。为什么?

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

不只是“slacktee”,而是使用完整路径,即/usr/local/bin/slacktee它应该可以正常工作。


推荐阅读