Как добавить метку времени в конец имени выходного файла задания cron?

15574
ariefbayu

Я хочу отслеживать каждый вывод crontab в отдельный файл. Обычно я использую это как запись в crontab:

1 * * * * root php /mix/dostuff.php > /tmp/dostuff.txt 

Теперь я хочу, чтобы сделать это, чтобы написать вместо того /tmp/dostuff.txt, чтобы/tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

Я мог бы получить часть даты, используя это:

TIMESTAMP=`date +%Y-%m-%H\ %k:%M:%S` 

Теперь, как мне вставить этот TIMESTAMP в выходной файл?

5

3 ответа на вопрос

8
Etienne Dechamps
1 * * * * root php /mix/dostuff.php > "/tmp/dostuff-`date +\%Y-\%m-\%H\ \%k:\%M:\%S`.txt" 

Просто как тот.

не работает, crontabs не оцениваются в той же среде, что и оболочка по умолчанию. John T 15 лет назад 0
Я не понимаю, как это было бы проблемой здесь. Среда cron достаточна для этой команды. Кроме того, это работает, я только что проверил это сам. Etienne Dechamps 15 лет назад 2
cron анализирует файл, а не `/ bin / bash`, вот почему. John T 15 лет назад 0
crontab (5): "Поле` `шестое '" (остальная часть строки) определяет команду, которую нужно выполнить. Вся часть команды строки, вплоть до символа новой строки или символа%, будет выполняться / bin / sh или оболочкой, указанной в переменной SHELL файла crontab. " Вы можете даже написать целые сценарии оболочки в строке crontab, если хотите! Etienne Dechamps 15 лет назад 3
промежуток между датой и + очень важен, только для следующего парня, который приходит jcollum 12 лет назад 1
`root php /mix/dostuff.php> / tmp / dostuff - $ (date + \% Y - \% m - \% H \ \% k: \% M: \% S) .txt` работал для меня. Никаких двойных кавычек не требуется для простых имен файлов и `$ ()` вместо уродливых обратных галочек. Erwin Brandstetter 10 лет назад 0
2
ursuleacv

На CentOS 6.6 я использую

*/10 * * * * /usr/bin/php -q /var/www/script.php > cron-job-log-$(date +\%Y\%m\%d\%H\%M\%S).txt 

он будет создавать файл каждые 10 минут

cron-job-log-20150401124001.txt 
1
John T

crontabs запускаются в среде, отличной от оболочки по умолчанию, поэтому вы можете использовать небольшой сценарий оболочки в вашем домашнем каталоге с чем-то вроде этого (назовем его script.sh):

#!/bin/bash php /mix/dostuff.php > /tmp/dostuff-`date +%Y-%m-%H\ %k:%M:%S`.txt exit 

затем измените разрешения сценариев, чтобы убедиться, что они исполняемые, 755 должно быть в порядке. Тогда в вашем crontab:

1 * * * * root /home/yourusername/script.sh 
ой, понятно спасибо за просвещение. ariefbayu 15 лет назад 0
Осторожно, `% Y-% m-% H` не является обычной комбинацией год-месяц-дата - попробуйте`% Y-% m-% d`! shuckc 10 лет назад 1