/bin/rm: недопустимая опция — '^M' при выполнении команды как cronjob

Я выполняю эту команду каждый час для чистки файлов:

# crontab -l
MAILTO=notify@localhost
0 */1 * * * find /var/www/tmp/ -name "*" -mmin +60 | /usr/bin/xargs /bin/rm -f -R

Но каждый раз, когда cronjob выполняется, электронное письмо с этим сообщением об ошибке послано на мой почтовый счет:

/bin/rm: invalid option -- '^M'

Вручную выполнение команды хорошо работает:

find /var/www/tmp/ -name "*" -mmin +60 | /usr/bin/xargs /bin/rm -f -R
# ok

Шоу журналов:

grep CRON /var/log/syslog
Dec 23 06:34:01 Ubuntu-1804-bionic-64-minimal CRON[29314]: (root) CMD (find /var/www/tmp/ -name "*" -mmin +60 | /usr/bin/xargs /bin/rm -f -R --^M)

Таким образом, по-видимому, проблема находится в файле крона.

С уважением,

4
задан 23 December 2019 в 08:37

2 ответа

Это кажется, что может быть возврат каретки в конце строки в Вашем crontab файле (^M, иногда производится non-carriage-return-friendly программами). Вы могли подтвердить это:

cat -v /var/spool/cron/crontabs/{user}

убедиться занять место {user} с Вашим именем пользователя. Если Вы видите ^M в выводе, то там iscarriage возвращается в файле. Они могут быть удалены с программой как sed ( убедиться скопировать файл сначала ):

sed -i 's/\r//' /var/spool/cron/crontabs/{user}'
9
ответ дан 23 December 2019 в 22:52

Благодаря Sergiy Kolodyazhnyy' подсказывают, что я узнал, что все crontabs заканчиваются символом управления. Я затем убрал и повторно вошел в команды, и теперь это работает:

crontab -l
crontab -e # enter commands here again
4
ответ дан 23 December 2019 в 22:52

Другие вопросы по тегам:

Похожие вопросы: