Shell脚本没有与cronjob一起运行


0

我正在使用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。路径设置错了吗?


你的位置在哪里? mybackup.sh?你能尝试改变你的cronjob吗? sh /path/to/mybackup.sh
attomos

我不是linux的人,但是当我登录到PUTTY并列出文件夹时,我看到像Desktop,Documents,Downloads,Pictures,public_html等文件夹。这就是mybackup.sh所在的位置。
erdomester

好的,当你看到 mybackup.sh。你可以键入 pwd 获取当前的工作目录。让我们说吧 /home/username附加 mybackup.sh。所以,在你的cron中,你可以使用类似的东西 sh /home/username/mybackup.sh。希望这个帮助:)
attomos

它是/ root。我也应该将文件附加到该文件中吗?
erdomester

是的,你可以尝试一下。 sh /root/mybackup.sh
attomos

Answers:


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


这没有用。日志中没有关于该脚本的内容。
erdomester

你的crontab现在的实际行是什么?
l0b0

我已经编辑了我的问题。我希望这能详细说明。
erdomester

正如我刚才所说,你需要为输出文件使用绝对路径。用你最新的cron工作 alldatabases.sql.gz 将保存在系统根目录中。 shell重定向操作符适用于 当前目录 ,至少对于根cron作业将成为根目录。
l0b0

我添加了路径。请再次查看我编辑的帖子。仍然没有在/ cron jobs文件夹中创建文件。
erdomester
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.