我想将备份存档从一台服务器下载到另一台服务器。服务器有一个提供最新备份存档的脚本,该文件具有每个日期的特定名称。我希望 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。
我看到你没有告诉你的脚本下载到哪里?也许你应该?
cd /some/path
在 wget 之前?我的最爱
如果您的系统可以发送电子邮件,请尝试
MAILTO
在您的 crontab 中添加一个变量,这样任何输出(stdout/stderr)都会用到有用的地方。我以这种方式设置每台服务器。没有更多的 cron 秘密!
请通过添加以下权限来检查您的脚本是否可执行:
接下来,通过以下方式检查脚本是否可以在您当前的系统用户下执行:
如果一切正常,您会分享您的 cron 作业设置以进行进一步检查吗?
您没有详细说明如何设置 cron 作业(用户范围、系统范围......)您确定 cron 条目的格式正确(就像忘记了一个字段)?系统 cron 条目应如下所示
我改写
man 5 crontab
如果您创建了用户 cron 条目,
crontab -e
则应省略该user
字段。确保当前工作目录(执行脚本的位置)对脚本是可写的。看看https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job