cron在win编辑后拷至linux部署在docker上踩的坑
过程描述
最近因为需要运行一些定时任务脚本并打包在docker上部署,之前尝试过cron一直都没问题,但这次不知道为什么一直不能跑起来,最后在排除了语法格式,时间,cron的启动情况等网上出现的常见的一些错误原因后依然没有解决。
发现的坑
在一系列尝试后,肉眼无法发现任何问题,关键docker预装的是ubuntu没有相关的日志。于是在docker里手动装了rsyslog:
#apt-get install -y rsyslog
#service rsyslog start
#tail -f /var/log/syslog
盯着不断打印的syslog半天最后发现,导入cron的命令句子的最后出现了一个前面没有发现的^M。这时才突然想起来这个crontabfile是前两天无意中在win上写的最后拷贝到Linux服务器上的,可能是dos下的换行符跟linux的换行符有区别。于是安装了dos2unix对文件进行转换:
#apt-get install -y dos2unix
#dos2unix crontabfile
最后将docker镜像进行重建,并跑起来发现任务正常执行,尝试rsyslog打印发现换行正常了。