Shell 脚本没有与 cronjob 一起运行

Shell 脚本没有与 cronjob 一起运行

我正在使用 PUTTY 访问服务器。我可以使用以下命令转储数据库:

/usr/bin/mysqldump --all-databases | /bin/gzip > Backup_DB/alldatabases_test.sql.gz

当我从 root 运行脚本时,文件被转储到指定的文件夹中:

root@server1 [~]# sh mybackup.sh
root@server1 [~/Backup_DB]# ls -a
./  ../  alldatabases_test.sql.gz

但是,当我将其设置为 cronjob 时,它并没有转储任何内容:

*/2 *   *   *   *   sh mybackup.sh

其他 cronjobs 运行良好。

编辑

因此,运行脚本不起作用,但我感谢您的帮助。我的最终目标是从我所有其他 cronjobs 所在的地方运行脚本,并在我可以通过 ftp 访问的文件夹中创建备份。这就是我添加 cronjob 的原因:

*/2 *   *   *   *   sh /home/mysite/www/cronjobs/mybackup.sh

内容如下:

/usr/bin/mysqldump --all-databases | /bin/gzip > /home/mysite/www/cronjobs/alldatabases.sql.gz

这也不起作用。我在 /cronjobs 文件夹中找不到 alldatabases.sql.gz。路径设置错误吗?

答案1

首先,您需要脚本的完整路径正如@attomos所说。获取此信息的最简单的方法是运行cd relative/path/to/script/directory,然后pwdecho "$PWD"获取当前目录。

其次,Backup_DB/alldatabases_test.sql.gz脚本内的路径现在是相对于系统根目录,因此脚本会尝试将其保存到/Backup_DB/alldatabases_test.sql.gz,这可能不是预期的。您需要使该路径也绝对化/root/Backup_DB/alldatabases_test.sql.gz

您应该会在中看到一些错误输出/var/log/cron

相关内容