Come aggiungere i log a un crontab con timestamp


9

In crontab, ho programmato uno script di backup giornaliero. Ora quando cron esegue lo script, lo stato viene registrato in un file di registro come mostrato di seguito.

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

Ora, quando cron esegue uno script, il contenuto del registro viene rinnovato ogni volta. Quindi, voglio che i contenuti vengano aggiunti allo stesso file con il timestamp del tempo eseguito e sotto il contenuto di ogni volta insieme ai contenuti esistenti. Come posso fare questo.


Non dimenticare di sfuggire al carattere "%" nel tuo crontab! +%d-%m-%y/%H:%M:%SDiventerebbe:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion il

Risposte:



5

Come ottenere il timestamp in un file

Per aggiungere un timestamp in un file è possibile utilizzare datevedere man dateper ulteriori dettagli. Ad esempio se si utilizza nel terminale si avrà un output come,

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

L'output è nel formato dd-mm-yy/hour:min:sec

Se si desidera inserire il timestamp in un file, utilizzare

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

reindirizzamento

Se si utilizza, date +%d-%m-%y/%H:%M:%S > filenamela data verrà memorizzata nel file ma verrà sovrascritta ogni volta che si utilizza il comando. Per aggiungerlo in un file esistente utilizzare,

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

Aggiungerà l'ultimo output di esecuzione alla fine del file esistente.

Cosa fai nel tuo caso

Puoi aggiungere la seguente riga alla fine del tuo /home/backup.sh,

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

E usa quanto segue in crontab,

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

Penso che la modifica di cui sopra dovrebbe fare quello che vuoi.


Questa dovrebbe essere la risposta accettata
Dominik,

1

(Su Debian Jessie) Usa il tscomando che fa parte del moreutilspacchetto. Per esempio:

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

Ciò anteporrà il timestamp a ogni riga dell'output e lo salverà nel registro.


1
Non ha funzionato per me, sto usando Ubuntu 16.04. Ho installatomoreutils
Hamman Samuel il

0

Dato che stai eseguendo uno script di shell, perché non aggiungere una riga come,

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

nel tuo script, ad esempio /home/backup.sh

Poi

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

aggiungerà una riga prima / dopo fbackup.log come gio 14 giu 11:10:22 UTC 2018


Non è echo `date -u`lo stesso di data -u?
Stephen Rauch,

L'eco aggiunge un'interruzione di linea AIUI.
pbhj,

-2

Puoi aggiungere qualcosa a un file usando due di queste cose '>'.

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

$ cat test.txt
test
test

2
Che dire del timestamp
user3004356
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.