Jak dodać dzienniki do crontab ze znacznikiem czasu

9

W crontab zaplanowałem codzienny skrypt kopii zapasowej. Teraz, gdy cron wykonuje skrypt, status jest rejestrowany w pliku dziennika, jak pokazano poniżej.

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

Teraz, gdy cron wykonuje skrypt, zawartość dziennika jest odnawiana za każdym razem. Chcę więc, aby zawartość została dodana do tego samego pliku ze znacznikiem czasu wykonanego czasu i poniżej zawartości za każdym razem wraz z istniejącą zawartością. W jaki sposób mogę to zrobić.

użytkownik3004356
źródło
Nie zapomnij uciec przed znakiem „%” w swoim crontabie! +%d-%m-%y/%H:%M:%S+\%d-\%m-\%y/\%H:\%M:\%S
Stałby

Odpowiedzi:

7

dlaczego nie tylko

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

Alexandr Perfilov
źródło
5

Jak uzyskać znacznik czasu w pliku

Aby dodać znacznik czasu do pliku, możesz użyć datezobacz man datewięcej szczegółów. Na przykład, jeśli użyjesz w terminalu, będziesz mieć wyjście, takie jak,

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

Dane wyjściowe mają format dd-mm-yy/hour:min:sec

Jeśli chcesz umieścić znacznik czasu w pliku, użyj

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

Przekierowanie

Jeśli użyjesz, date +%d-%m-%y/%H:%M:%S > filenamedata zostanie zapisana w pliku, ale zostanie zastąpiona przy każdym użyciu polecenia. Aby dołączyć go do istniejącego pliku,

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

Dodanie ostatniego wyniku wykonania na końcu istniejącego pliku.

Co robisz w swoim przypadku

Możesz dodać następujący wiersz na końcu swojego /home/backup.sh,

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

I użyj następujących w crontab,

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

Myślę, że powyższa modyfikacja powinna robić, co chcesz.

souravc
źródło
To powinna być zaakceptowana odpowiedź
Dominik
1

(W Debian Jessie) Użyj tspolecenia, które jest częścią moreutilspakietu. Na przykład:

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

Spowoduje to wstawienie znacznika czasu do każdego wiersza wyniku i zapisanie go w dzienniku.

Simon Woodside
źródło
1
Nie działało dla mnie, używam Ubuntu 16.04. Zainstalowałemmoreutils
Hamman Samuel
0

Ponieważ używasz skryptu powłoki, dlaczego nie dodać linii,

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

w twoim skrypcie tj. /home/backup.sh

Następnie

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

doda linię przed / po fbackup.log jak czw. 14 czerwca 11:10:22 UTC 2018

Nihal Sangeeth
źródło
Czy to nie echo `date -u`to samo co data -u?
Stephen Rauch
Echo dodaje AIUI podziału linii.
pbhj
-2

Możesz dodać coś do pliku, używając dwóch z tych rzeczy „>”.

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

$ cat test.txt
test
test
OrangeTux
źródło
2
Co z datownikiem
użytkownik3004356,