¿Qué quiero decir con sumativo?
Cuando creamos un crontab, por defecto nos envia la salida a «mail» (si lo tenemos instalado), y ahí vemos lo que saca el log. Si queremos que sacarlo a un archivo propio de «log» podemos indicarle dónde lo queremos, por ejemplo:
En el ejemplo, ejecuto un script de bash que me hace una backup de la carpeta en otro servidor y tengo un par de «echo«s que pinto la fecha de ejecución y otros parámetros
* * * * * /bin/bash /home/user/scripts/bkp_media_folder.sh > /home/user/scripts/log/bkp_media.log
En este ejemplo no tendría un registro de siempre que se ha ejecutado el log, ya que cada vez crea un archivo nuevo llamado backup_media.log.
Con el símbolo:
>
Hace un truncado del archivo, lo elimina (borrando todo el contenido 😮) y crea uno nuevo con el contenido de salida.
En cambio, si añadimos dos:
>>
Lo que hará es un «append» al archivo actual (añade lineas al actual archivo).
Con lo que deberíamos escribir la siguiente sentencia:
* * * * * /bin/bash /home/user/scripts/bkp_media_folder.sh >> /home/user/scripts/log/bkp_media.log
Nota: La sentencia «* * * * *» La he puesto para testear que funcionaba. Cada uno que ponga su preferencia.
Podemos «tunearlo» un poco mas… si le ponemos el 1 delante del símbolo «mayor que»:
1>
Nos pintará lo que no son errores.
Y si le ponemos el 2 delante:
2>
Nos escribirá los errores donde le mandemos.
…Sabiendo esto…
Si queremos enviar la salida de no errores a la «nada», deberíamos poner:
1> /dev/null
Y para pintar los errores:
2> /ubicacion/log/errores.log
Para que no nos siga mandando «mails» con error y no nos pintará ningún error.
Entonces, si quisiésemos tener dos logs, el de ejecución y el de errores podríamos setear algo así:
* * * * * /bin/bash /home/user/scripts/bkp_media_folder.sh 1>> /home/user/scripts/log/bkp_media.log 2>> /home/user/scripts/log/bkp_media_error.log
Espero que os sirva (: