shell - 将 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),则不能。为什么?
解决方案
重定向 stderr 我找不到 slacktee.sh 命令。因此,使用 slacktee.hs 作为 root 可以工作,但当 root 在 crontab 计划作业中使用它时(在每日计划脚本中我成功使用 slacktee),则不能。为什么?
因为用户root
和用户的 PATH 变量cron
是不同的。
不只是“slacktee”,而是使用完整路径,即/usr/local/bin/slacktee
它应该可以正常工作。
推荐阅读
- c# - 使用 RestSharp 将 Curl 转换为 C#
- python - 使用参数 PyQt 调用不同类的函数
- python - 如何在 PyQt 画布中插入 PIL.Image - PyQt5
- java - 如何在 .jar 中包含 .xlsx 文件?
- json - 我正在从颤振应用程序向 Django-Rest 用户发出 POST 请求并得到空响应
- python - 如何将值从熊猫数据帧填充到另一个具有不同日期时间索引的数据帧
- python - 在 Python 中按特定术语搜索单个句子的列表
- flutter - 在地图值中插入地图键作为 id
- java - 在具有不同项目数的适配器内将 Retrofit2 与 JSON 相结合
- c# - 使用带有 npm webpack 的 asp-net-core 从 cdn 加载引导程序