![Agregar marca de tiempo al archivo de registro mediante el comando cronjob](https://rvso.com/image/36009/Agregar%20marca%20de%20tiempo%20al%20archivo%20de%20registro%20mediante%20el%20comando%20cronjob%20.png)
Intento ejecutar el comando git pull con el mensaje de salida de registro en el archivo cada 5 minutos.
Pero recibí un error como este,
(root) CMD (cd /var/www/sites/ && git pull origin master | sed -e "s/^/$(date +\")
(CRON) error (grandchild #1111 failed with exit status 2)
Mi comando cronjob es el siguiente.
*/5 * * * * cd /var/www/site/ && git pull origin master | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >> /var/log/crond/site.log
¿Cómo puedo solucionarlo?
Respuesta1
Tenga en cuenta que, para algunos sistemas, a %
es especial en un crontab: desde crontab(5) en mi sistema
El "sexto" campo (el resto de la línea) especifica el comando que se ejecutará. La parte completa del comando de la línea, hasta una nueva línea o un carácter "%", será ejecutada por /bin/sh o por el shell especificado en la variable SHELL del archivo cron. Un carácter "%" en el comando, a menos que esté acompañado de una barra invertida (\), se cambiará a caracteres de nueva línea y todos los datos después del primer % se enviarán al comando como entrada estándar.
Ifuertementerecomendamos usar el formato de fecha %Y-%m-%d
; no solo esun estandar, ordena lo mismo léxica y cronológicamente. Algunas implementaciones de strftime tienen una abreviatura para ello:%F
Vea si su sistema tiene unts
dominio
cd /dir && git pull origin master 2>&1 | ts "\%F \%T" >> /var/log/crond/site.log
Para obtener marcas de tiempo en "tiempo real", es posible que tengas que quitar el buffer del comando: (comenzando a ponerse realmente feo)
cd /dir && stdbuf -oL sh -c 'git pull origin master 2>&1' | ts "\%F \%T" >> /var/log/crond/site.log