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
这样就能执行成功了。