Wysyłanie danych wyjściowych crona do pliku ze znacznikiem czasu w nazwie


37

Mam taki crontab w konfiguracji LAMP:

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

Spowoduje to zapisanie wyniku pliku do cron.log . Jednak po ponownym uruchomieniu zastępuje wszystko, co poprzednio znajdowało się w pliku.

Jak mogę przekonać crona do wyjścia do pliku ze znacznikiem czasu w nazwie pliku?

Przykładowa nazwa pliku może wyglądać tak: 2010-02-26-000000-cron.log

Tak naprawdę nie dbam o ten format, o ile ma on jakiś znacznik czasu.

Z góry dziękuję.


8
jeśli nie chcesz $HOME/cron.logzostać zastąpiony, >>nie używaj>
Dave Cheney

Odpowiedzi:


65

Próbować:

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

Baw się z formatem daty, jeśli chcesz; pamiętaj tylko, żeby uciec %jak \%wyżej.


Pozwólcie, że ogólnie zasugeruję podejście do nazw plików, takich jak 0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-data + \% Y \% m \% d \% H \% M \% S.log
Kristian

Jeśli potrzebujesz trochę bardziej czytelnej dla ludzi, spróbuj: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode

4
@DevilCode, tak, chociaż spacje w nazwach plików nie są zbyt konwencjonalne w Uniksie. Myślniki lub podkreślenia może być lepszym rozwiązaniem: date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log.
rozszczepienie

1
Te cholerne postaci ucieczki zawsze mnie dopadają. Dzięki za przypomnienie!
Tony-Caffe,

13

zdecydowanie zalecam zapisanie wszystkiego w tym samym pliku, używając znacznika czasu, jak wyjaśniono tutaj .

usunąć

2> i 1

i uruchom go przez skrypt znacznika czasu przed zapisaniem go w pliku dziennika (jak wyjaśniono w powyższym linku).


6

Możesz również dołączyć dane wyjściowe do pliku dziennika, wykonując następujące czynności:

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

0

Zmodyfikowałem skrypt w następujący sposób:

`/bin/date +\%Y\%m\%d`.log

-2

Rozwiązałem ten problem; po prostu dodaj ścieżkę daty (/ bin / date) przed poleceniem date.


2
Dodaj więcej informacji i przykład.
Danijel

-2
@daily /some/path/to/a/file.php 2>&1 > $HOME/$(date +\%Y\%m\%d\%H\%M\%S)-cron.log

5
To wymagałoby wielu wyjaśnień.
Sven
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.