@vlarkanov

Почему неверно выполняется задание cron?

У меня в /etc/crontab есть вот такая строчка:
1 2 * * * 	root	/bin/rmdir /var/spool/asterisk/monitor/$(date +%Y/%m/%d -d "12 day ago")/*

т.е. каждый день в 2:01 удаляем все пустые папки по адресу /var/spool/asterisk/monitor/дата-которая-была-12-дней-назад.

Задание не выполняется. Если выполнить команду в консоли - всё ок. Пошёл читать syslog на предмет что происходит при попытке выполнить задание - нашёл вот что:
Apr  1 02:01:01 ru-mos-dc01-ast01 CRON[23894]: (root) CMD (/bin/rmdir /var/spool/asterisk/monitor/$(date +)


Т.е. команда усеклась с символа % и далее. Как починить?
  • Вопрос задан
  • 129 просмотров
Решения вопроса 3
Поместите команду в шелл-скрипт, запускайте его из крона
Ответ написан
Комментировать
hint000
@hint000
у админа три руки
https://stackoverflow.com/questions/27123367/perce...
знак процента надо экранировать бэк-слэшем:
1 2 * * * 	root	/bin/rmdir /var/spool/asterisk/monitor/$(date +\%Y/\%m/\%d -d "12 day ago")/*
Ответ написан
Комментировать
@Stqs
senior software developer
vlarkanov,

по-моему этот вопрос уже задавали когда-то
суть в том что когда вы выполняете команду "в консоли" вы по факту используете bash скорее всего или его производные
cron же в свою очередь использует sh, а не bash
а там есть небольшие нюансы в написании команд
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы