Dans crontab, j’ai programmé un script de sauvegarde quotidien. Maintenant, lorsque le cron exécute le script, les statuts sont consignés dans un fichier journal, comme indiqué ci-dessous.
0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1
Désormais, 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 d'exécution et en dessous du contenu de chaque heure avec le contenu existant. Comment puis-je faire ceci.
Comment obtenir l'horodatage dans un fichier
Pour ajouter un horodatage dans un fichier, vous pouvez utiliser date
voir man date
pour plus de détails. Par exemple, si vous utilisez dans un 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 > filename
, la date sera stockée dans le fichier mais elle sera écrasée à chaque fois que vous utiliserez la commande. Pour l'ajouter à un fichier existant, utilisez
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.
pourquoi pas juste
0 * * * * (/bin/date && /home/backup.sh) >> /var/log/backup.log 2>&1
(Sur Debian Jessie) Utilisez la commande ts
qui fait partie du package moreutils
name__. 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.
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 c'est-à-dire /home/backup.sh
Ensuite
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