我正在尝试创建一个 crontab 来备份 MySQL 中的数据库,该mysqldump
命令作为单个命令或运行 bash 脚本运行良好,没有任何错误,但是当我将 bash 脚本添加到 crontab 文件时,它没有执行,下面是我的代码:
#!/bin/bash
mysqldump --column-statistics=0 -h xx.xx.xx.xxx -u wissam -p'xxxxxx'
--all-databases | gzip > ~/Desktop/DBs/Backup"$(date +"%Y_%m_%d_%I_%M_%p")file.sql.gz"
crontab 命令:
09 9 * * * root sh /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log
已添加到/etc/crontab
,之后我尝试重新启动服务,但对我不起作用,我也尝试了这些解决方案1,2和3但仍然没有工作。
请问有什么帮助吗?
答案1
Crontab 需要绝对路径,因此除了 Rinzwind 的建议外,还可以使用
09 9 * * * root /bin/bash /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log
或者
09 9 * * * root /home/ahmad/Desktop/DBs/mysqlcron.sh 2>&1>> /home/ahmad/Desktop/DBs/MySQLdump.log
答案2
请使用绝对路径。
mysqldump
和
~/
需要一个目录。“~”永远不会扩展到您的用户。
除此之外:
-h xx.xx.xx.xxx -u wissam -p'xxxxxx'
非常糟糕,因为它会将主机和密码回显到进程列表中。使用...
--defaults-extra-file=.mysql
并至少将密码放入该文件中。