Как заставить crontab генерировать уникальный журнал каждый раз при запуске задания?

Как заставить crontab генерировать уникальный журнал каждый раз при запуске задания?

Вот задание crontab

/usr/local/bin/python2.7 /home/scripts/script.py >> /home/scripts/logs/log.log 2>&1

Как генерировать новый журнал каждый раз при запуске задания?

Меня устраивает добавление увеличивающегося счетчика в файл журнала каждый раз при его генерации. Не знаю, как это сделать.

Мне действительно нужно запускать еще одно задание cron, чтобы сделать это?

решение1

dateДля генерации уникального имени файла можно использовать команду:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/"`date +\%d\%m\%y_\%H\%M\%S`".log 2>&1

РЕДАКТИРОВАТЬ:Обязательно избегайте знаков процента.( \%). У них естьособое значениев cron и crontab вернет ошибку.

Таким образом, новый файл журнала (называемый <date_time>.log) будет создаваться каждый раз при запуске вашего задания.

$ date; touch "`date +%d%m%y_%H%M%S`.log"
  Tue Sep 25 04:39:25 CEST 2012
$ ls *log
  250912_043925.log

Если предположить, что ваш скрипт не запускается чаще одного раза в секунду (что невозможно, если вы используете простой crontab), то все должно быть в порядке.

Если, как предлагается в комментариях, ваш скрипт запускается разными пользователями, вы можете добавить имя пользователя к имени файла журнала:

/usr/local/bin/python2.7 /home/scripts/script.py > /home/scripts/logs/$(echo -n `whoami`_`date +\%d\%m\%y_\%H\%M\%S`).log 2>&1

Связанный контент