我在一台服务器上编写了一个简短的脚本来备份文件夹并通过 FTP 将其发送到另一台服务器。我试图使用 crontab 将其设置为每分钟运行一次。当我手动运行它时,它运行正常,但是当 cron 运行它时,似乎什么都没有发生(即另一端没有收到任何文件)。正如我在标题中所说,任务显示在 syslog 中,好像一切都正常。
脚本如下:
#! /bin/sh
cd /root
FILENAME="backup-$(date +%b_%d_%Y_%H:%M).zip"
zip -r $FILENAME folder
ftp -in 74.131.78.127 24721 << EOF > ~/log.txt 2>&1
user myusername
binary
cd Desktop/backups
mput $FILENAME
EOF
rm $FILENAME
Crontab 条目:
* * * * * /root/backup.sh
我使用 输入了此内容crontab -e
。
答案1
我找到了我的问题。实际上,它root
没有权限访问我这个命名不当的/root
文件夹。一个简单的chmod -R 707 /root
方法就解决了。
答案2
设置创建单独的cron.log会很有帮助,更加有用。
此问答描述了该过程:
16.04:如何让 cron 创建 cron.log 并实时监控它?
此答案中还提供了创建wcron
显示近乎实时的命令的说明。
另外,它链接到另一个答案,
这显示了如何更改日志级别以包含不仅仅是作业的开始 - 级别 15 还将显示错误和结束时间。
也许您的答案就在日志输出中。