Я хочу создать файл журнала для скрипта cron с текущим часом в имени файла журнала. Это команда, которую я пытался использовать:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
К сожалению, я получаю это сообщение при запуске:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Я пытался избежать роли date
разными способами, но без особой удачи. Можно ли сделать это встроенным в файл crontab или мне нужно создать сценарий оболочки для этого?
date +\%Y\ \%m\ \%d\ \%H:\%M:\%S
-cronlogВы также можете поместить свои команды в файл оболочки и затем выполнить файл оболочки с помощью cron.
jobs.sh
хрон
источник
Если вы хотите сделать строку форматирования даты в качестве переменной (чтобы избежать дублирования всей строки), НЕ экранируйте
%
и НЕ помещайте ее в$()
Например, при объявлении строки просто напишите:
Затем напишите заявление cron
$($VARIABLE_NAME)
следующим образом:Благодаря cyberx86 , ее / его ответ на ServerFault может быть более завершена:
источник
В cron вы можете использовать этот простой синтаксис:
источник
-d
опцию, которая не используется в вопросе (и вы ее не объяснили). Как вы оправдываете называть этот «простой синтаксис»?Все вышеприведенные ответы используют двойные кавычки (не все из них работали для моей настройки). Это сработало для меня:
источник
Основное решение:
$()
для выполненияdate
команды и возврата вывода%
символ с помощью\
2>&1
в конце для потоковой передачиstdout
иstderr
в этот файл журналаПример:
Выход:
источник