运行wget作为cron作业

我想从一台服务器下载备份档案到另一台。 服务器有一个提供最新备份存档的脚本,该文件具有每个date的特定名称。 我想要wget保存这个名字。

当我运行:

wget -q --content-disposition 'http://server.example.com/get/latest' 

它只是我想要的。 我也可以用浏览器下载文件。

但是,当我把它放在一个shell脚本中,并尝试运行它作为cron工作没有任何反应。 我在/var/log/syslog中看不到任何错误。

这是整个shell脚本:

 #!/bin/sh wget -q --content-disposition 'http://bkp.www1.linux.local/get/latest' 

我也试过#!/bin/bash ,结果相同。

我究竟做错了什么?

你没有给出详细信息,你如何设置cron作业(用户范围,系统范围,…)你确定cron条目格式正确(就像被遗忘的领域)吗? 系统cron条目应该是这样的

 0 1 * * 0 root /usr/bin/my-command 

我换用man 5 crontab

 field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sunday, or use names) user user of the system command the command to run (should be executable) 

如果你创build了一个用户cron条目,用crontab -e你应该省略user字段。

确保当前工作目录(脚本执行的位置)可写入脚本。 看看https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job

告诉你的脚本写一个日志或做一些自己的debugging。 下次运行,你会得到你所有的答案。 如果它不像它应该debugging,下一步是责备cron。

我看你没有告诉你的脚本在哪里下载? 也许你应该? 在wget之前的cd /some/path

我的最爱

如果您的系统可以发送电子邮件尝试添加一个MAILTOvariables到您的crontab,所以任何输出(标准输出/标准错误)将有用的地方。 我这样设置每台服务器。

没有更多的cron秘密!

请检查您的脚本是否可执行,方法如下:

 # chmod +x <your_script_name> 

接下来,检查脚本是否可以在您当前的系统用户下执行:

 # ./<your_script_name> 

如果一切运行良好,你会分享你的cron作业设置进一步检查?