Bookmark and Share
You are here: Home Blog Luca Cipriani Cron non esegue gli script? Ecco la soluzione

Cron non esegue gli script? Ecco la soluzione

Se cron non esegue correttamente gli script su Ubuntu, se i vostri backup di Plone, Zope, Mysql non vengono avviati. Ecco la soluzione.

by Luca Cipriani - 2010-07-14

Problema: Cron non esegue gli script da voi indicati.

Può capitare a volte (o spesso, se siete particolarmente sfortunati) che non vengano eseguiti correttamente gli script in cron sulla vostra macchina Ubuntu server o desktop. In particolare vi mostrerò un paio di script in cui siamo incappati io e il mio collega Matteo Sorba.

Il primo riguarda il dump di un database mysql, il secondo il backup di un'istanza Zope.

Svolgimento: gli script incriminati

Ecco le righe del file mysqlbackup contenuto in /etc/cron.d

38 3 * * * root /usr/bin/mysqldump --opt --all-databases > /var/lib/mysql/mysql-all-dump.sql -u root -p'mypassword' && gzip --rsyncab
le /var/lib/mysql/mysql-all-dump.sql

Lo script dovrebbe creare un dump di tutti i database e poi comprimere il file con gzip. Purtroppo questo script non veniva avviato affatto da cron, mentre lanciando l'istruzione da console "a mano" tutto sembrava funzionare correttamente.

Il secodo script utilizza Repozo ed è chiamato repozobackup nella dir /etc/cron.d

18 /2 * * * root /opt/zope/instance/bin/backup &> /var/log/repozo/backup.log

Soluzione: Ubuntu dash e bash

La soluzione per il caso esposto è consistita nel cambiare la shell di default di Ubuntu che è dash, con la ben più nota bash. Per verificare che abbiate queste impostazioni e per risolvere il problema digitate:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2010-05-05 16:27 /bin/sh -> dash
$ sudo rm /bin/sh
$ sudo ln -s /bin/bash /bin/sh
$ ls /bin/sh -l
lrwxrwxrwx 1 root root 9 2010-07-14 16:35 /bin/sh -> /bin/bash

Ora non resta che riavviare cron e avere tutto funzionante

$ sudo service cron restart
$ sudo service cron status
cron start/running, process 19268

Buon cron a tutti.

grazie

Posted by SysKing at 2010-08-03 00:06
Letto, provato e funziona. Ti devo una birra quando passi da Termoli

Prego

Posted by Luca Cipriani at 2010-08-03 09:35
Volentieri. Un po' di mare e una birra fresca aiutano il SysAdmin a lavorare bene. Aggiungo un cron per la visita a Termoli.

Birra

Posted by Giorgio at 2010-10-08 08:57
tieni pagata pure na birra a caserta :D

Birra

Posted by Luca Cipriani at 2010-10-08 15:05
Non mi fate diventare alcolizzato... Se diventate parecchi si organizza un tour :). Un altro cron schedulato per Caserta. Grazie.

grande

Posted by zio at 2010-10-22 08:13
finalmente ho scoperto i misteri di cron su ubuntu!

thx

thank's

Posted by Denis at 2011-01-31 09:40
grazie, ci avevo perso la mattina :-)

Non và! ;(

Posted by Cristian Di Stefano at 2011-04-13 12:03
Io sto provando a eseguire un semplice script per l'invio di una mail di test, ma non ne vuole sapere di funzionare.
Il codice sul crontab è il seguente:
21 11 13 4 * wget http://www.miodominio.com/prova_cron.php > /dev/null/ &

mentre il codice sulla pagina "prova_cron.php" è:
mail('miamail@miodominio.com', 'Prova crontab', 'Se leggo questa mail vuol dire che funziona');

qualcuno ha consigli?
Grazie a tutti in anticipo.

Errori nel file cron.

Posted by Luca Cipriani at 2011-04-18 08:32
Ciao,

Con wget scarichi semplicemente lo script ma non lo esegui.
Wget non è un browser, per eseguire uno script devi usare un interprete.
Inoltre manca il nome utente con cui esegui il comando.
Probabilmente devi scrivere qualcosa del genere:
10 10 * * * nobody /usr/bin/php file.php

Fai qualche tentativo.

Grazieeeee!!!

Posted by Luca at 2011-08-10 07:58
Ci avevo perso una giornata....provvidenziale, grazie!
Luca