Я выполняю эту команду каждый час для чистки файлов:
# 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)
Таким образом, по-видимому, проблема находится в файле крона.
С уважением,
Это кажется, что может быть возврат каретки в конце строки в Вашем 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}'
Благодаря Sergiy Kolodyazhnyy' подсказывают, что я узнал, что все crontabs заканчиваются символом управления. Я затем убрал и повторно вошел в команды, и теперь это работает:
crontab -l
crontab -e # enter commands here again