Comment ajouter les journaux à une crontab avec horodatage

9

Dans crontab, j'ai planifié un script de sauvegarde quotidien. Maintenant, lorsque le cron exécute le script, l'état est enregistré dans un fichier journal comme indiqué ci-dessous.

0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1  

Maintenant, lorsque le cron exécute un script, le contenu du journal est renouvelé à chaque fois. Donc, je veux que le contenu soit ajouté au même fichier avec l'horodatage de l'heure exécutée et en dessous du contenu de chaque fois avec le contenu existant. Comment puis-je faire ceci.

user3004356
la source
N'oubliez pas d'échapper au caractère "%" dans votre crontab! +%d-%m-%y/%H:%M:%S+\%d-\%m-\%y/\%H:\%M:\%S
Deviendrait

Réponses:

7

pourquoi pas

0 * * * * (/bin/date && /home/backup.sh) >> /var/log/backup.log 2>&1

Alexandr Perfilov
la source
5

Comment obtenir l'horodatage dans un fichier

Pour ajouter un horodatage dans un fichier, vous pouvez utiliser datevoir man datepour plus de détails. Par exemple, si vous utilisez dans le terminal, vous aurez une sortie comme,

$ date +%d-%m-%y/%H:%M:%S
19-12-13/09:14:42

La sortie est au format dd-mm-yy/hour:min:sec

Si vous souhaitez mettre l’horodatage dans un fichier, utilisez

date +%d-%m-%y/%H:%M:%S > filename

Redirection

Si vous utilisez date +%d-%m-%y/%H:%M:%S > filenamealors la date sera stockée dans le fichier mais elle sera écrasée à chaque fois que vous utiliserez la commande. Pour l'ajouter dans une utilisation de fichier existante,

date +%d-%m-%y/%H:%M:%S >> filename

Il ajoutera la dernière sortie d'exécution à la fin de votre fichier existant.

Ce que vous faites dans votre cas

Vous pouvez ajouter la ligne suivante à la fin de votre /home/backup.sh,

date +%d-%m-%y/%H:%M:%S

Et utilisez ce qui suit dans crontab,

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

Je pense que la modification ci-dessus devrait faire ce que vous voulez.

souravc
la source
Cela devrait être la réponse acceptée
Dominik
1

(Sur Debian Jessie) Utilisez la tscommande qui fait partie du moreutilspaquet. Par exemple:

0 0 * * * /home/backup.sh | ts '[%Y-%m-%d %H:%M:%S]' > /home/groupz/db-backup/fbackup.log 2>&1  

Cela ajoutera l'horodatage à chaque ligne de la sortie et l'enregistrera dans votre journal.

Simon Woodside
la source
1
Cela n'a pas fonctionné pour moi, j'utilise Ubuntu 16.04. J'ai installémoreutils
Hamman Samuel
0

Puisque vous exécutez un script shell, pourquoi ne pas ajouter une ligne comme,

some ./script    
echo `date -u `
some ./other/script

dans votre script ie /home/backup.sh

alors

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

ajoutera une ligne avant / après fbackup.log comme Thu Jun 14 11:10:22 UTC 2018

Nihal Sangeeth
la source
N'est-ce pas echo `date -u`la même chose que data -u?
Stephen Rauch
L'écho ajoute un saut de ligne AIUI.
pbhj
-2

Vous pouvez ajouter quelque chose à un fichier en utilisant deux de ces choses '>'.

$ echo "test" >> test.txt
$ echo "test" >> test.txt

$ cat test.txt
test
test
OrangeTux
la source
2
Qu'en est-il de l'horodatage
user3004356