crontab的一个小问题

最近家里网断了,交易系统想要正常运行,就得用手机开热点,但是偶尔要出门,就没办法了,而且有时候也会忘记开热点,导致不能及时更新数据,为了摆脱这个烦恼,趁着昨晚失眠的时间,我把交易系统给上云了。

之前的log日志是直接append到一个文件里的,在本地好说,用电脑查看,也没什么不妥。上云后,为了能方便的通过移动设备来访问,于是将日志按照时间来做了切分:

/path/to/bin/update_stock_data.sh >> /path/to/logs/update-$(date +%Y%m%d).log 2>&1

然后将这个命令加入了云服务器的crontab,但是怎么都不运行。。

刚开始以为是cron服务没有启动,检查之:service cron status,没问题,active

查看日志:tail -200 /var/log/syslog,发现cron确实执行了,但是没执行成功,显示这么一句:

CRON[5629]: (root) CMD ("/root/quantization/bin/update_stock_data.sh >> /root/matrix/logs/update-$(date +)

乍一看,我以为是系统没显示完全,但是命令执行没问题,那是不是这个$()需要双引号引起来呀,改了之后,仍然没有作用,

后来网上搜了一番,才发现,我去,%在cron里被解释成了换行。。。

需要加上\来进行转义,这样:

/path/to/bin/update_stock_data.sh >> /path/to/logs/update-$(date +\%Y\%m\%d).log 2>&1

这样就能执行成功了。

作者

skyrover

发布于

2023-03-14

更新于

2023-03-14

许可协议

评论