Назад | Перейти на главную страницу

Почему cron в CentOS жалуется на возврат каретки?

У меня есть машина CentOS 6, на которой я пытаюсь запустить некоторые cronjobs, и задания не работают, жалуются на возврат каретки (^ 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. Какие-либо предложения?

Используйте редактор, который использует правильную линейную организацию. Быстрое решение -

export EDITOR=vi
crontab -e
:1,$s/^V^M//g
:wq

где ^V^M является Crtl+vCrtl+м

Как вы редактируете файл crontab? Копировалось ли оно с помощью каких-либо систем Windows, блокнота и т. Д.?

Это не разрывы строк в UNIX. ^ M - это жесткий возврат каретки (иногда известный как \ r при использовании escape-последовательностей). Окончание строки Windows - это \ r \ n (возврат каретки, перевод строки), а окончание строки UNIX - просто \ n.

Если вы в любой момент использовали FTP в режиме ASCII или текстовый редактор Windows для получения содержимого файла в новой системе CentOS, скорее всего, это проблема.

Установить dos2unix и преобразовать его в окончание строки Unix:

# dos2unix /var/spool/cron/root