Saltar al contenido

¿Cómo redirigir la salida a un archivo desde cron?

Solución:

Resolví el problema. Hay dos maneras:

M1

Cambiar la redirección de &>> para 2>&1. Y ahora crontab -e parece

*/1 * * * * /home/ranveer/vimbackup.sh >> /home/ranveer/vimbackup.log 2>&1

Yo creo lo anterior funciona porque por defecto cron esta usando sh para ejecutar la tarea en lugar de bash asi que &>> no es compatible con sh.

M2

Cambie el shell predeterminado agregando SHELL=/bin/bash en el crontab -e expediente.

Descargo de responsabilidad [1].

Me gustaría agregar una nota al pie o un apéndice a la respuesta de @ RanRag.

Asegúrese de que su sintaxis de redirección de shell se ajuste a /bin/sh. Si intenta utilizar una sintaxis de redirección de shell que no es válida con /bin/sh entonces su comando fallará y su trabajo cron nunca se ejecutará.

En tus /etc/cron.d/example1 config archivos si especifica un usuario que no sea root y el shell de inicio de sesión de ese usuario no es /bin/bash… todavía debe usar la sintaxis / bin / sh en /etc/cron.d/example1 mando.


Por ejemplo

Si su usuario tiene shell csh o zsh o ksh configurado para su shell de inicio de sesión. En tus /etc/cron.d/example1 config, el comando debe usar /bin/sh sintaxis. Específicamente, cualquier redirección de shell debe ser /bin/sh sintaxis.

Si intenta utilizar, por ejemplo csh sintaxis de redireccionamiento de shell en su /etc/cron.d/example1, entonces su trabajo cron nunca se ejecutará. El archivo de registro para crond situado en /var/log/cron dirá que el comando se está ejecutando, pero el comando saldrá con un error de sintaxis antes de que se ejecute su comando.

Donde hace crond ¿Emite mensajes de error para un error de sintaxis?

El error nunca se informa en /var/log/cron. crond en su lugar, por defecto emite cualquier mensaje de error usando mail. Entonces debes comprobar /var/spool/mail/${USER} para ver cuál es el error.

[1]

Descargo de responsabilidad

  • Esta respuesta asume un sysv sistema
  • systemd la información puede diferir
  • Específicamente, esta información se obtuvo para centos-6 distribución y puede que no se aplique a diferentes sysv distribuciones
    • menciono centos-6 específicamente, porque diferentes distribuciones pueden tener diferentes crond implementación que difiere de centos-6
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *