У меня есть машина 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