微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash脚本不从crontab执行[复制]

参见英文答案 > Why crontab scripts are not working?                                    46个
我有以下bash脚本:

#!/bin/bash
MysqLdump -u ******** -P********  --all-databases | gzip > /home/srvlinux01/MysqLBackups/database_$(date +\%Y-\%m-\%d).sql.gz

它位于/ home / srvlinux01 / MysqLBackups / as backup.sh,具有以下权限

-rwxr--r-- 1 root       root           134 feb 27 12:48 backup.sh

我已经在sudo crontab -e上设置了一个cronjob,以便每天晚上运行它

#Automatic MysqL backup
30 3 * * * sh /home/srvlinux01/MysqLBackups/backup.sh

但我收到通过电子邮件发送以下错误

sh: 0: Can't open /home/srvlinux01/MysqLBackups/backup.sh

我一直在尝试不同的设置,但无法弄清楚出了什么问题.我可以手动运行脚本,一切都很顺利,所以我猜我的cronjob条目有问题,但不能真正理解是什么.你能帮帮我解决一下吗?谢谢!

解决方法:

你需要给你的cron一个PATH.例如:

SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin 

在您的情况下,尝试将此命令放在您的命令之前.有关为什么需要PATH变量的更多信息,请查看this question中的社区wiki.这是一段摘录;基本上这个想法是cron不读取/ etc / environment:

A common “gotcha” is the PATH environment variable being different. Maybe your cron script uses the command somecommand found in /opt/someApp/bin, which you’ve added to PATH in /etc/environment? cron does not read that file, so running somecommand from your script will fail when run with cron, but work when run in a terminal. To get around that, just set your own PATH variable at the top of the script.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐