我想从一台服务器下载备份档案到另一台。 服务器有一个提供最新备份存档的脚本,该文件具有每个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作业设置进一步检查?