![Shell 脚本没有与 cronjob 一起运行](https://linux22.com/image/1405833/Shell%20%E8%84%9A%E6%9C%AC%E6%B2%A1%E6%9C%89%E4%B8%8E%20cronjob%20%E4%B8%80%E8%B5%B7%E8%BF%90%E8%A1%8C.png)
我正在使用 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
,然后pwd
或echo "$PWD"
获取当前目录。
其次,Backup_DB/alldatabases_test.sql.gz
脚本内的路径现在是相对于系统根目录,因此脚本会尝试将其保存到/Backup_DB/alldatabases_test.sql.gz
,这可能不是预期的。您需要使该路径也绝对化:/root/Backup_DB/alldatabases_test.sql.gz
。
您应该会在中看到一些错误输出/var/log/cron
。