Отправка вывода cron в файл с отметкой времени в его имени

38

У меня есть crontab, как это на установке LAMP:

0 0 * * * /some/path/to/a/file.php > $HOME/cron.log 2>&1

Это записывает вывод файла в cron.log . Однако, когда он запускается снова, он перезаписывает все, что было ранее в файле.

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

Пример имени файла будет примерно таким: 2010-02-26-000000-cron.log

Меня не волнует формат, если у него есть временная метка.

Заранее спасибо.

Филип Мортон
источник
8
если вы не хотите $HOME/cron.logперезаписываться, >>не используйте>
Дейв Чейни

Ответы:

66

Пытаться:

0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1

Поиграйте с форматом даты, если хотите; просто убедитесь, что вы избежали чего-либо %подобного \%, как указано выше.

расщепление
источник
И позвольте мне, как правило, предложить подход к именам файлов, таким как 0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-дата + \% Y \% m \% d \% H \% M \% S.log
Кристиан
Если вам нужно немного более удобочитаемое, попробуйте: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode
4
@DevilCode, да, хотя пробелы в именах файлов не очень обычны в Unix. Дефисы или подчеркивания может быть лучшим вариантом: date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log.
деление
1
Эти чертовы убегающие персонажи всегда получают меня. Спасибо за напоминание!
Тони-Кафе
14

я настоятельно рекомендую вам сохранить все в одном файле, используя метку времени, как описано здесь .

удалять

2> & 1

и запустите его через скрипт отметки времени, прежде чем сохранить его в файле журнала (как описано в приведенной выше ссылке).

Тони Гил
источник
6

Вы также можете добавить свой вывод в файл журнала, выполнив это следующим образом:

0 0 * * * /some/path/to/a/file.php >> $HOME/cron.log 2>&1
Приостановлено до дальнейшего уведомления.
источник
0

Я изменил скрипт так:

`/bin/date +\%Y\%m\%d`.log
Ardhy
источник
-2

Я решил эту проблему; просто добавьте путь к дате (/ bin / date) перед командой date.

user213005
источник
2
Пожалуйста, добавьте больше информации и пример.
Даниэль
-2
@daily /some/path/to/a/file.php 2>&1 > $HOME/$(date +\%Y\%m\%d\%H\%M\%S)-cron.log
Иван Ковтун
источник
5
Это потребует много объяснений.
Свен