Shell脚本不会以root身份在cron中运行

时间:2017-02-28 16:01:39

标签: linux cron sh crontab

我的root cron文件中有以下代码:     PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 45 12 * * * /home/ben/MetaBackup/metabackup.sh 2>&1 >/dev/null | slacktee.sh -t "Metabase Backup Error" -a "danger"

slacktee.sh位于/ usr / local / bin和/ usr / bin但是当我运行这个metabackup.sh运行正常但slacktee.sh没有。我已经尝试了松弛的绝对位置,但这不起作用。更令人困惑的是我把完全相同的行放在我的用户crontab中,而slacktee运行正常。我究竟做错了什么?或者这是一个松散的问题,我需要在那里筹集?

编辑: 这里有一个松弛的:https://github.com/course-hero/slacktee

3 个答案:

答案 0 :(得分:0)

您正在将metabackup.sh的stdout和stderr重定向到/ dev / null,所以我认为没有输出通过管道输出到slacktee.sh并且其标准输入为空。

尝试删除> /dev/null

答案 1 :(得分:0)

我同意gile!

如果没有输出,松弛的人就不能打印任何东西。

如果它仍然无效,请尝试在命令中加载配置文件:

45 12 * * * . ~/.profile;/home/ben/MetaBackup/metabackup.sh 2>&1 | slacktee.sh -t "Metabase Backup Error" -a "danger"

当然,根据你是使用bash还是ksh(.profile或.bash_profile)来调整文件

不要忘记"。 "在.profile文件前面。

希望它会有所帮助。

答案 2 :(得分:0)

最有可能的是,cron没有在其路径中找到slacktee.sh。您正在为第一个命令设置PATH,但该设置不适用于管道之后的命令。

尝试使用slacktree的完整路径:

... | /usr/local/bin/slacktee.sh -t "Metabase Backup Error" -a "danger"
相关问题