我的 bash 文件不是由以 root 身份创建的 cronjob 执行的。cronjob 设置如下所示
0 0 * * * mysql_backup.sh
是否需要使用 bash 命令进行声明0 0 * * * bash mysql_backup.sh
?如果我手动执行我的 bash 脚本,sudo bash mysql_backup.sh
它就可以正常工作。
我一直在使用创建 cronjob sudo crontab u root -e
,并且 bash 文件位于 centos 的根目录中
答案1
首先,您需要使用完整路径,例如:
0 0 * * * /path/to/mysql_backup.sh
其次,您需要确保您的脚本具有执行权限,或者您可以使用以下命令调用它:
0 0 * * * /bin/bash /path/to/mysql_backup.sh
第三,您需要确保您以足够的权限执行您的 cron 作业。
答案2
您还可以在脚本的第一行添加以下命令:
#!/bin/bash
(假设 bash 位于 /bin/bash)。这将使您的脚本即使直接调用也会由 bash 运行,而不是作为 bash 的参数。
您可以添加一些日志并检查您的 crontab 日志,看看是否存在可以引导您找到解决方案的错误。