Как cron может выводить данные в новый файл журнала на основе даты?

Я хотел бы записать вывод cron в устаревший файл — /tmp/log/cron-2014-12-17.log

$ mkdir /tmp/log
$ chmod 777 /tmp/log
$ ls -lah /tmp/log
drwxrwxrwx 2 root root 4.0K Dec 17 21:51 .

Крон (через root пользователь)

* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1

/tmp/log остается пустым после каждой минуты.

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

// Running it manually as a CLI works fine, but not as a cron
$ /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F").log 2>&1

Кроме того, если я создаю файл и chmod 777 его, cron будут записать вывод в этот созданный файл. Это просто не создаст один на лету.

// Let's create it first
$ touch /tmp/log/cron.log
$ chmod 777 /tmp/log/cron.log
// wait for the next minute...
$ tail -f /tmp/log/cron.log
output... output... output...

Но это не работает для динамических имен, таких как /tmp/log/cron-2014-12-17.log,

Что мне не хватает?

1

Решение

Это исправит вашу проблему:

0 0 * * * /some/path/to/a/file.php >> /tmp/log/cron-`date +\%F`.log 2>&1
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]