GNU/Linux >> Linux Esercitazione >  >> Linux

Problema Crontab:Cron Job non funziona quando si utilizza la percentuale

Domanda: Qual è il motivo per cui il mio lavoro cron non viene eseguito quando utilizzo la percentuale "%" nel mio lavoro cron. Come risolvere questo problema?

Risposta: '%' è il nuovo identificatore di riga nel comando cron. Pertanto, quando usi %, viene interpretato come una nuova riga nel lavoro cron. Vediamo come superare questo problema e utilizzare % nel processo cron.

Definizione del problema con esempio:'%' nel lavoro cron (lavoro cron non riuscito)

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

 
A scopo di test, tutti i campi nell'esempio crontab sopra contengono *. Questo eseguirà il cronjob specificato ogni minuto.
 
Per comprendere la configurazione di crontab, leggi il nostro articolo precedente che contiene 15 fantastici esempi di cron job.
 
Se hai accesso a syslog avrai una linea simile come la seguente.

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

 
Nella voce syslog per questo esempio specifico il comando è mostrato solo come:(data +") . Idealmente dovrebbe essere visualizzato come:data +”%d” . Ciò indica che la percentuale viene analizzata come un simbolo speciale nel cron. cioè termina il comando esattamente alla %age.

Soluzione con esempio:aggirare per utilizzare '%' nel lavoro cron.

È possibile risolvere questo problema utilizzando i due metodi seguenti. Questa soluzione dovrebbe risolvere il problema su tutte le versioni di Unix/Linux, inclusi Ubuntu, Debian, Fedora, RedHat, CentOS, AIX ecc.

Metodo 1:sfuggire alla percentuale con \

Puoi sfuggire alla percentuale con una barra rovesciata e farlo funzionare come un normale lavoro.

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

 
Nota: Questo "\" non verrà visualizzato dal comando date o da qualsiasi altro comando che invochi. Il \ è quello di sfuggire al comportamento speciale della percentuale in cron.

Metodo 2:usa lo script della shell

Crea uno script di shell con il comando percentuale e pianifica lo script di shell come cron job.

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

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

Al minuto successivo avrai l'output del comando eseguito in /tmp/working-ex2.txt
 
Ora avrai la seguente riga che ha eseguito correttamente il comando nel syslog.

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

 
Nota: Non dimenticare di rimuovere queste voci cron di test poiché verranno eseguite ogni minuto.
 
Se hai avuto altri problemi con crontab, faccelo sapere nella sezione commenti.


Linux
  1. Linux:esegui cron job in primo piano

  2. Rimuovi i file di registro usando cron job

  3. Come visualizzare un cron job attualmente in esecuzione?

  4. Come aggiungere un lavoro crontab a crontab usando uno script bash?

  5. comando non trovato quando si utilizza sudo

Come automatizzare le attività in Linux usando Crontab

Linux – Perché Usb non funziona in Linux quando funziona in Uefi/bios?

Problemi con la tastiera che non funziona all'avvio?

Gestione di processi Cron duplicati durante l'esecuzione di script

Linux Crontab:15 fantastici esempi di Cron Job

Perché il mio cron job non mi invia email?