Gestire il Crontab con il Plesk

gestire il crontab con il plesk

Spesso, sopratutto su siti web di e-commerce, abbiamo la necessità di eseguire automaticamente e in un determinato momento alcune operazioni molto importanti come, ad esempio, creare un backup del database oppure importare nel catalogo i nuovi prodotti.

In questo articolo vediamo come il crontab di linux ed il Plesk Panel possono aiutarci a soddisfare queste esigenze, evitandoci di procedere manualmente e quindi ottimizzando il nostro (tempo di) lavoro.

Cos’è il crontab?

Il crontab deriva da crond, ovvero il demone – cioè un servizio che viene eseguito in background – che sui sistemi UNIX (e derivati) controlla ed esegue i task pianificati detti anche cronjobs.

Ok, ma come fa il crond a sapere esattamente cosa deve eseguire e (soprattutto) quando?

All’interno di ogni cronjob è possibile configurare una temporizzazione, ovvero stabilire i seguenti parametri:

  • minuto (0 – 59)
  • ora (0 – 23)
  • giorno del mese (1 – 31)
  • mese (1 – 12)
  • giorno della settimana (0 – 6)

All’interno del cronjob è inoltre possibile definire, con la direttiva MAILTO, l’indirizzo e-mail al quale inviare notifica in caso di eventuali errori di sintassi, reportistica del cronjob, etc…
Invece nel caso volessimo disattivare tale notifica, basterà reindirizzare lo standard output (stdout) su /dev/null e lo standard error (stderr) su stdin, aggiungendo in coda al comando da eseguire le seguenti istruzioni:

> /dev/null 2>&1

Un caso pratico del funzionamento del Crontab

Supponiamo di dover creare automaticamente un backup del nostro database ogni 5 minuti. Useremo, tramite crontab, il comando mysqldump che ci consente di salvare in formato SQL il nostro database.

Questi sono i dati del DB da salvare:

Nome DB: db01
Utente: utente_db01
Password: 1Wv73.Q$

Colleghiamoci al Plesk Panel, andiamo all’interno dell’iscrizione che contiene il nostro Database e clicchiamo su Attività pianificate:

1

 

 

 

clicchiamo su Impostazioni per inserire l’indirizzo e-mail a cui inviare le notifiche del crontab:

2

 

 

 

 

clicchiamo su Aggiungi attività per inserire gli elementi che caratterizzano la temporizzazione del crontab ed i relativi comandi da eseguire e clicchiamo su ok:

3

 

 

 

 

 

 

 

Dopo aver dato conferma, il crontab verrà installato e saremo riportati sulla pagina che ci mostra il cronjob per esteso:

4

 

 

 

 

 

Poiché mentre scrivevo questo articolo la mia indole da sistemista ha preso il sopravvento, ho aggiunto anche un altro paio di direttive al cronjob che è diventato così:

SHELL=/bin/bash
MAILTO=f.leo@flamenetworks.com
*/5     *       *       *       *       date=`date “+\%Y-\%m-\%d-\%H-\%M-\%S”` ; mysqldump -u utente_db1 -p1Wv73.Q$ db1 > ~/httpdocs/backup/backup-db1-$date.sql ; bzip2 ~/httpdocs/backup/backup-db1-$date.sql

SHELL indica la shell da utilizzare per eseguire il cronjob, in questo caso bash
Con MAILTO definiamo, come accennato poco fa, l’indirizzo e-mail al quale inviare le notifiche del cronjob
Poi il cronjob vero e proprio che, ogni 5 minuti, esegue il dump SQL del nostro database, lo salva nella directory backup e, infine, comprime il backup con bzip2.

Et voilà, ecco a voi il dump del nostro database:

root@vps:~# ls -l /var/www/vhosts/flamenetworks.com/httpdocs/backup/
totale 4368
-rw-r–r– 1 flame psacln 744906 feb 27 18:15 backup-db1-2015-02-27-18-15-01.sql.bz2
-rw-r–r– 1 flame psacln 744924 feb 27 18:20 backup-db1-2015-02-27-18-20-01.sql.bz2
-rw-r–r– 1 flame psacln 744899 feb 27 18:25 backup-db1-2015-02-27-18-25-01.sql.bz2
-rw-r–r– 1 flame psacln 744884 feb 27 18:30 backup-db1-2015-02-27-18-30-01.sql.bz2
-rw-r–r– 1 flame psacln 744913 feb 27 18:35 backup-db1-2015-02-27-18-35-01.sql.bz2
-rw-r–r– 1 flame psacln 744826 feb 27 18:40 backup-db1-2015-02-27-18-40-01.sql.bz2
root@vps:~#

Come vedete il file viene creato ogni 5 minuti, contiene la data ed è compresso per non occupare troppo spazio sul disco.

Magari nel prossimo articolo vi parlerò di come effettuare l’importazione del database, partendo dal backup SQL che abbiamo appena creato. 🙂

Rispondi all'articolo

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.