Команда с символами процента не работает в crontab


11

Следующий crontab не работает:

# TEST LINE DOES DOT RUN
*/1 * * * * /bin/echo 'test '`/bin/date +%Y-%m-%d` >> /tmp/test

Я также попытался начать это с:

SHELL=/bin/bash

Обновление: я думал, что символы обратного удара `были злодеями, но, как показывает ответ ниже, процент% был виновником!


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

не первая минута? # mh dom mon
dow

Вы правы .. Я изменил на * / 1, чтобы он работал каждую минуту. Cron работает нормально. Есть что-то с командами. Похоже, что/bin/date +%Y-%m-%d
lpanebr

Ответы:


13

В /bin/date +%Y-%m-%d, вам нужно бежать каждый %с в \соответствии с этой страницы человека :

«Шестое» поле (остальная часть строки) указывает команду, которую нужно выполнить. Вся командная часть строки, вплоть до новой строки или символа%, будет выполняться / bin / sh или оболочкой, указанной в переменной SHELL файла cronfile. Знаки процента (%) в команде, если они не экранированы обратной косой чертой (), будут изменены на символы новой строки, и все данные после первого% будут отправлены команде в качестве стандартного ввода.


2
Благодарность! Я отредактирую вопрос так, чтобы он соответствовал реальной проблеме.
lpanebr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.