为什么 CentOS 上的 cron 会抱怨回车符?

为什么 CentOS 上的 cron 会抱怨回车符?

我有一台 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^MCrtlvCrtlm

答案2

您如何编辑 crontab 文件?它是使用 Windows 系统、记事本等复制的吗?

这些不是 UNIX 换行符。^M 是硬回车符(使用转义序列时有时称为 \r)。Windows 行尾为 \r\n(回车符,换行符),而 UNIX 行尾只是 \n。

如果您在任何时候使用 ASCII 模式 FTP 或 Windows 文本编辑器来获取新 CentOS 系统上的文件内容,那么很可能就是问题所在。

答案3

安装dos2unix并将其转换为 Unix 行结尾:

# dos2unix /var/spool/cron/root

相关内容