Отправка вывода 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

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




-2

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


2
Пожалуйста, добавьте больше информации и пример.
Даниэль

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