Mat*_*sta 22 mysql bash backup scripts
我有以下 bash 脚本:
#!/bin/bash
mysqldump -u ******** -p******** --all-databases | gzip > /home/srvlinux01/MySQLBackups/database_$(date +\%Y-\%m-\%d).sql.gz
Run Code Online (Sandbox Code Playgroud)
它位于/home/srvlinux01/MySQLBackups/
作为backup.sh
具有下列权限
-rwxr--r-- 1 root root 134 feb 27 12:48 backup.sh
Run Code Online (Sandbox Code Playgroud)
我已经设置了一个 cronjobsudo crontab -e
来每天晚上运行它
#Automatic MySQL backup
30 3 * * * sh /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误的电子邮件:
sh: 0: Can't open /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
我一直在尝试不同的设置,但无法弄清楚出了什么问题。我可以手动运行脚本,一切都很顺利,所以我猜我的 cronjob 条目有问题,但无法真正理解是什么。你能帮我弄清楚吗?谢谢!
don*_*oey 19
你需要给你的 cron 一个PATH
. 例如:
SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin
Run Code Online (Sandbox Code Playgroud)
在你的情况下,试着把它放在你的命令之前。查看此问题中的社区 wiki,了解有关为什么PATH
需要该变量的更多信息。这是摘录;本质上,这个想法是 cron 不读取/etc/environment
:
一个常见的“问题”是 PATH 环境变量不同。也许您的 cron 脚本使用了在 中
somecommand
找到的命令/opt/someApp/bin
,您已将其添加到PATH
中/etc/environment
?cron 不读取该文件,因此somecommand
在使用 cron运行时从脚本运行将失败,但在终端中运行时可以工作。要解决这个问题,只需PATH
在脚本顶部设置您自己的变量即可。
小智 9
chmod +x /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
尝试在命令行上使用完整路径运行脚本:
/home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
如果它没有运行 - 有问题(路径错误)
确保这是您的 crontab
crontab -e
Run Code Online (Sandbox Code Playgroud)
没有须藤:
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
是 root crontab - 并且 root 无法找到您的脚本;)
在 crontab 中删除“sh”只需写:
30 3 * * * /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
小智 8
我可以在您的 crontab 文件配置中看到一个错误。在下面的配置中,您尝试调用backup.sh
与在 shell 提示符中相同的sh
前缀,这在 cron 中可能不起作用。
#Automatic MySQL backup
30 3 * * * sh /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)
解决方案:
chmod a+x <文件名>
更新您的 crontab 以反映这一点。(直接调用文件,根据文件内的shebang行使用shell)
#Automatic MySQL backup
30 3 * * * /home/srvlinux01/MySQLBackups/backup.sh
Run Code Online (Sandbox Code Playgroud)我希望这会有所帮助。