Cron Job non in esecuzione?


24

Ho un file crontab che assomiglia a questo:

* * * * * /home/abliskovs/update/update.sh

Tuttavia, quando controllo il syslog per prove che il lavoro è stato eseguito, non c'è nulla che possa indicare che sia mai stato eseguito. Come posso verificare se è in esecuzione?

crontab -l genera quanto segue:

* * * * * /home/abliskovs/update/update.sh


OK, l'ho fatto.
Alex Bliskovsky,

Forse una domanda stupida, ma prima mi è successo, quindi lo farò comunque. Assicurati che il demone cron sia effettivamente in esecuzione! : P La seconda ipotesi è permessi, assicurati che sia eseguibile dall'utente che esegue cronjob.
Mattias Ahnberg,

Risposte:


21

Aggiungi un >> / tmp / testlog.log alla fine della voce crontab (per reindirizzare l'output su un file che puoi esaminare o verificare se è in esecuzione, inoltre un 2> & 1 includerebbe l'output dalla console degli errori)

Esempio

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

Assicurati anche i seguenti:

  • Aggiungi cronjobs nel modo giusto. se hai usato crontab -e nel tuo account, gli script vengono eseguiti con il tuo utente (e quindi la voce crontab ha un campo in meno - l'utente che lo esegue, come è noto). Se hai semplicemente copiato il tuo snipped sopra in /etc/cron.d, fallirebbe perché non hai specificato un utente (o piuttosto non trova nessun utente chiamato "bash").
  • Assicurarsi che il file di script sia eseguibile, altrimenti non lo eseguirà.
  • Ricarica cron job sudo service ricaricare o riavvia cron servicesudo /etc/init.d/cron restart

Come rendere eseguibile un file?

Diversi modi per rendere eseguibile il tuo file

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh

3

Assicurati che il file di script sia eseguibile {chmod 755}, altrimenti non lo eseguirà


2
Per rendere eseguibile un file, puoi anche eseguirechmod +x filename
Stefano Palazzo

0

Lo script della shell update.shprobabilmente contiene errori, ad esempio alcuni comandi che non possono essere eseguiti perché non è possibile trovare il comando. In questo caso può essere utile aggiungere il percorso al comando nella variabile PATH o aggiungerlo direttamente davanti al comando. Aiuta anche a specificare l'indirizzo e-mail MAILTO, le e-mail che risultano dall'esecuzione di Cronjobs vengono inviate a questo indirizzo

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

È inoltre possibile controllare la cassetta postale locale con maile il file syslog /var/log/syslogper errori. Vedi anche questa domanda correlata sul perché i cronjobs potrebbero non funzionare .


0

Ho riscontrato lo stesso problema e la causa per me era che crontab non era in esecuzione perché non aveva il permesso. Ho modificato il file e l'ho inserito in /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

Fammi sapere se questo funziona per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.