So fügen Sie die Protokolle einer Crontab mit Zeitstempel hinzu

9

In crontab habe ich ein tägliches Sicherungsskript geplant. Wenn der Cron das Skript ausführt, wird der Status wie unten gezeigt in einer Protokolldatei protokolliert.

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

Wenn der Cron nun ein Skript ausführt, wird der Inhalt des Protokolls jedes Mal erneuert. Daher möchte ich, dass der Inhalt derselben Datei mit dem Zeitstempel der ausgeführten Zeit und unter dem Inhalt jedes Mal zusammen mit dem vorhandenen Inhalt hinzugefügt wird. Wie kann ich das machen.

user3004356
quelle
Vergiss nicht, dem "%" -Zeichen in deiner Crontab zu entkommen! +%d-%m-%y/%H:%M:%SWürde werden:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion

Antworten:

7

warum nicht einfach

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

Alexandr Perfilov
quelle
5

So erhalten Sie einen Zeitstempel in einer Datei

Um einen Zeitstempel in eine Datei einzufügen, können Sie datesiehe man datefür weitere Details verwenden. Wenn Sie beispielsweise im Terminal verwenden, erhalten Sie folgende Ausgaben:

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

Die Ausgabe erfolgt im Format dd-mm-yy/hour:min:sec

Wenn Sie den Zeitstempel in eine Datei einfügen möchten, verwenden Sie

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

Umleitung

Wenn Sie verwenden, date +%d-%m-%y/%H:%M:%S > filenamewird das Datum in der Datei gespeichert, aber es wird jedes Mal überschrieben, wenn Sie den Befehl verwenden. Um es an eine vorhandene Datei anzuhängen, verwenden Sie:

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

Es wird die letzte Ausführungsausgabe am Ende Ihrer vorhandenen Datei hinzugefügt.

Was Sie in Ihrem Fall tun

Sie können die folgende Zeile am Ende Ihrer /home/backup.sh,

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

Und verwenden Sie die folgenden in crontab,

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

Ich denke, die obige Modifikation sollte tun, was Sie wollen.

Souravc
quelle
Dies sollte die akzeptierte Antwort sein
Dominik
1

(Auf Debian Jessie) Verwenden Sie den tsBefehl, der Teil des moreutilsPakets ist. Z.B:

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

Dadurch wird jeder Zeile der Ausgabe der Zeitstempel vorangestellt und in Ihrem Protokoll gespeichert.

Simon Woodside
quelle
1
Hat bei mir nicht funktioniert, ich benutze Ubuntu 16.04. Ich installiertemoreutils
Hamman Samuel
0

Da Sie ein Shell-Skript ausführen, fügen Sie eine Zeile wie folgt hinzu:

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

in Ihrem Skript dh /home/backup.sh

Dann

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

wird eine Zeile vor / nach fbackup.log wie Do 14. Juni 11:10:22 UTC 2018 anhängen

Nihal Sangeeth
quelle
Ist das nicht echo `date -u`dasselbe wie data -u?
Stephen Rauch
Das Echo fügt eine Zeilenumbruch-AIUI hinzu.
pbhj
-2

Sie können etwas an eine Datei anhängen, indem Sie zwei dieser Dinge '>' verwenden.

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

$ cat test.txt
test
test
OrangeTux
quelle
2
Was ist mit Zeitstempel
user3004356