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

Задание Cron с командой $ (date) и перенаправлением не запускается

Это задание cron, которое я пытаюсь выполнять каждую ночь:

0   20  *   *   *   /data/code/scripts/foo.sh >/root/foo.$(date +%Y-%m-%d-%T).log 2>&1

Когда я запускаю его из командной строки, он работает нормально. Но Cron, похоже, даже не пытается запустить его.

Мысли?

Символы% необходимо экранировать в заданиях cron.

Поставьте перед каждым символом обратную косую черту.

Позднее редактирование:

Я не уверен, как я пропустил это раньше, но вы используете синтаксис bash для создания подоболочки для запуска вашего date command in. Поскольку cron не является bash, это не сработает. Это будет работать, если вы измените свою работу cron на это:

0   20  *   *   *   /data/code/scripts/foo.sh >/root/foo.`date +\%Y-\%m-\%d-\%T`.log 2>&1

В качестве альтернативы вы можете выполнить перенаправление вывода из сценария или (если это не подходит) написать сценарий оболочки, который вызывает вышеуказанный и выполняет перенаправление вывода.

Возможно, вам также потребуется использовать полный путь к date команда.

Вероятно, он находится в /bin/date, вы можете проверить, где он находится в коробке, с помощью which date.