Como adicionar os logs a um crontab com carimbo de data / hora

9

No crontab, agendei um script de backup diário. Agora, quando o cron executa o script, o status é registrado em um arquivo de log, como mostrado abaixo.

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

Agora, quando o cron executa um script, o conteúdo do log é renovado toda vez. Portanto, quero que o conteúdo seja adicionado ao mesmo arquivo com carimbo de data e hora do tempo executado e abaixo do conteúdo de cada momento, juntamente com o conteúdo existente. Como posso fazer isso.

user3004356
fonte
Não se esqueça de escapar do caractere "%" no seu crontab! +%d-%m-%y/%H:%M:%S+\%d-\%m-\%y/\%H:\%M:\%S
Tornaria-

Respostas:

7

porque não apenas

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

Alexandr Perfilov
fonte
5

Como obter o registro de data e hora em um arquivo

Para adicionar um carimbo de data / hora em um arquivo, use datever man datepara mais detalhes. Por exemplo, se você usar no terminal, terá saída como,

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

A saída está no formato dd-mm-yy/hour:min:sec

Se você deseja colocar o carimbo de data / hora em um arquivo, use

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

Redirecionamento

Se você usar date +%d-%m-%y/%H:%M:%S > filename, a data será armazenada no arquivo, mas será substituída toda vez que você usar o comando. Para anexá-lo a um arquivo existente, use:

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

Ele adicionará a última saída de execução no final do seu arquivo existente.

O que você faz no seu caso

Você pode adicionar a seguinte linha no final do seu /home/backup.sh,

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

E use o seguinte no crontab,

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

Eu acho que a modificação acima deve fazer o que você deseja.

souravc
fonte
Esta deve ser a resposta aceita
Dominik
1

(No Debian Jessie) Use o tscomando que faz parte do moreutilspacote. Por exemplo:

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

Isso precederá o registro de data e hora de todas as linhas da saída e o salvará em seu log.

Simon Woodside
fonte
11
Não funcionou para mim, estou usando o Ubuntu 16.04. Eu instaleimoreutils
Hamman Samuel
0

Como você está executando um script de shell, por que não adicionar uma linha como,

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

no seu script, ou seja, /home/backup.sh

Então

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

anexará uma linha antes / depois do fbackup.log como qui Jun 14 11:10:22 UTC de 2018

Nihal Sangeeth
fonte
Não é echo `date -u`o mesmo que data -u?
Stephen Rauch
O eco adiciona uma AIUI de quebra de linha.
Pbhj
-2

Você pode acrescentar algo a um arquivo usando duas dessas coisas '>'.

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

$ cat test.txt
test
test
OrangeTux
fonte
2
E quanto ao carimbo de data
user3004356