我有一台 CentOS 6 机器,我正尝试在其上运行一些 cronjob,但这些作业失败,并抱怨行末有回车符 (^M)。示例/var/log/cron
条目:
CROND[20344]: (root) CMD (/usr/local/bin/php /usr/local/bin/somescript.php >/dev/null 2>&1^M)
CROND[20213]: (root) CMD (/usr/local/bin/php /usr/local/bin/somescript.php^M)
所有这些在 CentOS 5.x 上运行良好,所以看起来这是 CentOS 6 的东西。有什么建议吗?
答案1
使用具有正确行组织的编辑器。快速解决方法是
export EDITOR=vi
crontab -e
:1,$s/^V^M//g
:wq
其中+ +^V^M
CrtlvCrtlm
答案2
您如何编辑 crontab 文件?它是使用 Windows 系统、记事本等复制的吗?
这些不是 UNIX 换行符。^M 是硬回车符(使用转义序列时有时称为 \r)。Windows 行尾为 \r\n(回车符,换行符),而 UNIX 行尾只是 \n。
如果您在任何时候使用 ASCII 模式 FTP 或 Windows 文本编辑器来获取新 CentOS 系统上的文件内容,那么很可能就是问题所在。
答案3
安装dos2unix
并将其转换为 Unix 行结尾:
# dos2unix /var/spool/cron/root