Envoi de la sortie cron dans un fichier avec un horodatage dans son nom


38

J'ai une crontab comme celle-ci sur une configuration LAMP:

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

Ceci écrit la sortie du fichier dans cron.log . Toutefois, lorsqu’il est exécuté à nouveau, il écrase tout ce qui se trouvait auparavant dans le fichier.

Comment puis-je faire en sorte que cron soit exporté dans un fichier avec un horodatage dans son nom de fichier?

Un exemple de nom de fichier ressemblerait à ceci: 2010-02-26-000000-cron.log

Je me fous vraiment du format, tant qu'il a un horodatage quelconque.

Merci d'avance.


8
si vous ne voulez $HOME/cron.logpas être écrasé, n'utilisez >>pas>
Dave Cheney Le

Réponses:


66

Essayer:

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

Jouez avec le format de date, si vous voulez; assurez-vous simplement d'échapper à tout %comme \%, comme ci-dessus.


Et laissez-moi généralement suggérer une approche de noms de fichiers comme 0 0 * * * /some/path/to/a/file.php > $HOME/scriptname-date + \% Y \% m \% d \% H \% M \% S.log
Kristian

Si vous en avez besoin d'un peu plus de lisibilité humaine, essayez: date +\%Y\ \%m\ \%d\ \%H:\%M:\%S-cron.log
DevilCode

4
@DevilCode, oui, bien que les espaces dans les noms de fichiers ne soient pas très conventionnels sous Unix. Les traits d' union ou underscores pourrait être une meilleure option: date +\%Y-\%m-\%d_\%H:\%M:\%S-cron.log.
fission le

1
Ces personnages d'évasion flippants me prennent toujours. Merci pour le rappel!
Tony-Caffe

14

Je vous recommande fortement de tout sauvegarder dans le même fichier, en utilisant l'horodatage, comme expliqué ici .

retirer

2> & 1

et exécutez-le via le script d'horodatage avant de l'enregistrer dans le fichier journal (comme expliqué dans le lien ci-dessus).



0

J'ai modifié le script comme ceci:

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

-2

J'ai résolu ce problème. ajoutez simplement le chemin de date (/ bin / date) avant la commande de date.


2
S'il vous plaît ajouter plus d'informations et exemple.
Danijel

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

5
Cela nécessiterait beaucoup d'explications.
Sven
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.