Cómo agregar los registros a un crontab con marca de tiempo

9

En crontab, programé un script de copia de seguridad diario. Ahora, cuando el cron ejecuta el script, el estado se registra en un archivo de registro como se muestra a continuación.

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

Ahora, cuando el cron ejecuta un script, el contenido del registro se renueva cada vez. Entonces, quiero que los contenidos se agreguen al mismo archivo con la marca de tiempo del tiempo ejecutado y debajo de los contenidos de cada vez junto con los contenidos existentes. Cómo puedo hacer esto.

usuario3004356
fuente
¡No olvides escapar del carácter "%" en tu crontab! +%d-%m-%y/%H:%M:%SSería:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion

Respuestas:

7

por qué no solo

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

Alexandr Perfilov
fuente
5

Cómo obtener la marca de tiempo en un archivo

Para agregar una marca de tiempo en un archivo, puede usar datever man datepara obtener más detalles. Por ejemplo, si usa en la terminal, tendrá salida como

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

La salida está en el formato dd-mm-yy/hour:min:sec

Si desea poner la marca de tiempo en un archivo, use

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

Redireccionamiento

Si lo usa date +%d-%m-%y/%H:%M:%S > filename, la fecha se almacenará en el archivo, pero se sobrescribirá cada vez que use el comando. Para agregarlo en un uso de archivo existente,

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

Agregará la última salida de ejecución al final de su archivo existente.

Lo que haces en tu caso

Puede agregar la siguiente línea al final de su /home/backup.sh,

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

Y usa lo siguiente en crontab,

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

Creo que la modificación anterior debería hacer lo que quieras.

souravc
fuente
Esta debería ser la respuesta aceptada
Dominik
1

(En Debian Jessie) Use el tscomando que forma parte del moreutilspaquete. P.ej:

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

Esto antepondrá la marca de tiempo a cada línea de la salida y la guardará en su registro.

Simon Woodside
fuente
1
No funcionó para mí, estoy usando Ubuntu 16.04. Instalémoreutils
Hamman Samuel
0

Como está ejecutando un script de shell, ¿por qué no agrega una línea como,

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

en su script, es decir, /home/backup.sh

Entonces

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

agregará una línea antes / después de fbackup.log como jue 14 de junio 11:10:22 UTC 2018

Nihal Sangeeth
fuente
¿No es lo echo `date -u`mismo que data -u?
Stephen Rauch
El eco agrega un salto de línea AIUI.
pbhj
-2

Puede agregar algo a un archivo usando dos de estas cosas '>'.

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

$ cat test.txt
test
test
OrangeTux
fuente
2
¿Qué pasa con la marca de tiempo
User3004356