我正在尝试将动态创建的日志文件从本地框上传到我的 FTP 服务器。这一切都发生在我每晚运行的 cron 作业 (crontab) 中。它使用以下方式创建文件:
30 00 * * * touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"
效果很好。但是,当我尝试使用相同语法上传文件时:
50 00 * * * curl -T ~/Desktop/logs/"log$(date +'\%m\%d\&y')" -u user:pass ftp://example.com/logs/
它给了我以下错误:
date: extra Operand
我也尝试过不转义%的情况:
curl -T ~/Desktop/logs/"log$(date +'%m%d%y')" -u user:pass ftp://example.com/logs/
在正常命令行中有效,但通过 crontab 执行时出现以下错误:
/bin/sh: Syntax error: Unterminated quoted string
关于如何将每日日志成功上传到我的服务器,有什么想法吗?
答案1
我在 cron 作业中通常指定日期的方式是不在整个名称周围使用引号,而是在日期命令周围使用反引号,因此:
50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/
尽管我希望$(date ...)
语法也能起作用。
(哦,我假设第二个 cron 作业中 y 之前的 & 符号是问题中的拼写错误 - 但如果你 cron 作业中也有这个符号,那就有问题了。)