GNU/Linux >> Tutoriales Linux >  >> Linux

Problema de Crontab:el trabajo de Cron no funciona cuando se usa el porcentaje

Pregunta: ¿Cuál es la razón por la que mi trabajo cron no se ejecuta cuando uso el porcentaje '%' en mi trabajo cron? ¿Cómo solucionar este problema?

Respuesta: '%' es el especificador de nueva línea en el comando cron. Por lo tanto, cuando usa %, se interpreta como una nueva línea en el trabajo cron. Veamos cómo superar este problema y usar % en el trabajo cron.

Definición de problema con ejemplo:'%' en el trabajo cron (trabajo cron no exitoso)

* * * * * date +"%d" >> /tmp/non-working-ex1.txt

 
Para fines de prueba, todos los campos en el ejemplo de crontab anterior tienen *. Esto ejecutará el cronjob especificado cada minuto.
 
Para comprender la configuración de crontab, lea nuestro artículo anterior que contiene 15 impresionantes ejemplos de trabajos cron.
 
Si tiene acceso a syslog verá una línea similar a la siguiente.

Jun 20 08:31:01 ubuntu-laptop /USR/SBIN/CRON[6752]: (ramesh) CMD (date +")

 
En la entrada de syslog para este ejemplo específico, el comando se muestra solo como:(fecha +”) . Idealmente, esto debería mostrarse como:fecha +”%d” . Esto indica que el porcentaje se analiza como un símbolo especial en el cron. es decir, finaliza el comando exactamente en el % de edad.

Solución con ejemplo:solución alternativa para usar '%' en el trabajo cron.

Puede resolver este problema utilizando los siguientes dos métodos. Esta solución debería resolver el problema en todas las versiones de Unix/Linux, incluidos Ubuntu, Debian, Fedora, RedHat, CentOS, AIX, etc.,

Método 1:escapar del porcentaje con \

Puede escapar del porcentaje con una barra invertida y hacer que funcione como un trabajo normal.

$ crontab -l
* * * * * date +"\%M" > /tmp/working-ex1.txt

 
Nota: Este '\' no será visto por el comando de fecha, ni por ningún otro comando que invoques. El \ es para escapar del comportamiento especial de porcentaje en cron.

Método 2:Usar script de shell

Cree un script de shell con el comando de porcentaje y programe el script de shell como trabajo cron.

$ cat /bin/date.sh
date +"%d"

$ crontab -l
* * * * * /bin/sh /bin/date.sh > /tmp/working-ex2.txt

En el siguiente minuto, tendrá la salida del comando ejecutado en /tmp/working-ex2.txt
 
Ahora tendrá la siguiente línea que ejecutó el comando con éxito en el syslog.

Jun 20 08:36:01 ubuntu-laptop /USR/SBIN/CRON[6962]: (ramesh) CMD (/bin/sh /bin/date.sh >> /tmp/working-ex2.txt)

 
Nota: No olvide eliminar estas entradas cron de prueba, ya que se ejecutarán cada minuto.
 
Si tuviste algún otro problema con el crontab, háznoslo saber en la sección de comentarios.


Linux
  1. Linux:Ejecutar trabajo cron en primer plano

  2. @reboot no funciona en CRON

  3. ¿Cómo agregar un trabajo crontab a crontab usando un script bash?

  4. comando no encontrado al usar sudo

  5. El reenvío de agente SSH no funciona incluso cuando se usa `ssh -A`

Cómo automatizar tareas en Linux usando Crontab

¿Problemas con el teclado que no funciona cuando se inicia?

Gestión de trabajos cron duplicados al ejecutar scripts

Linux Crontab:15 impresionantes ejemplos de trabajo de Cron

¿Por qué mi trabajo cron no me envía un correo electrónico?

¿Qué zona horaria está usando un trabajo cron?