Disponete di un hosting per il vostro sito e volete eseguire delle operazioni periodiche prefissate, ad esempio check del database, backup, controlli di vario genere, invio di email e così via? Il vantaggio dei cron-job è che possono configurarsi sia da cPanel (sugli hosting PHP è solitamente sempre possibile sfruttarli) sia, avendo un VPS (Virtual Private Server), mediante shell ssh. àˆ quest’ultimo il caso che andremo a considerare, in quanto la sintassi utilizzata è sostanzialmente la stessa in entrambe le interfaccie.
- 1) Programmare delle azioni predefinite sul server
- 2) Come controllare periodicamente se MySql è attivo (e in caso riavviarlo)
- 3) Cron-job: due tipologie, di sistema e “ad uso utente”
- 4) Formato dei cron-tab
- 5) Esempi pratici di cron (ogni giorno, ogni giorno lavorativo, ogni giorno specifico, …)
- 6) Configurare i cron job di WordPress via crontab di Linux
- 7) Altri esempi pratici da riutilizzare
Programmare delle azioni predefinite sul server
Cron viene lanciato in background all’avvio del sistema dallo script /etc/init.d/cron
a cui punta il link presente in /etc/rc2.d/
, ovvero non dovreste di norma aver bisogno di lanciarlo “a mano”. Tutti i job di ogni voce (crontab) vengono caricati in memoria, mentre le operazioni si possono effettuare via shell ssh, ovvero vi loggate da PuTTY oppure con il terminale:
ssh root@IP
inserite la vostra password di root e, nel caso di Ubuntu/Debian, potete andare ad agire direttamente sul cosiddetto crontab: infatti
crontab -l
mostra le azioni di cron attive, mentre
crontab -e
vi farà editare la tabella dei cron direttamente (il funzionamento dell’editor è tipicamente quello di pico).
La sintassi generica è:
crontab [-u user] file
Per vedere i log dei cron-job della vostra VPS basta digitare:
grep CRON /var/log/syslog
per vedere tutte le corrispondenze (in termini di cron di sistema).
Come controllare periodicamente se MySql è attivo (e in caso riavviarlo)
Mi capitava spesso di verificare che un sito in WordPress avesse MySql che tendeva a “cadere” dopo un certo periodo (problema di configurazione): cosa fare per evitare disagi al cliente? Per quanto sia una soluzione spartana in certe situazioni, è possibile sfruttare i cron-job per costringere il sistema ad es. a riavviare MySql qualora venga rilevato come inattivo:
## check mysql ogni 15 minuti: se è offline riattivalo 0,15,30,45 * * * * service mysql status || service mysql restart
Il che significa: se mysql status restituisce false, scatta in automatico il restart, altrimenti non succede nulla, e tutot questo avviene in modalità sincrona, ogni 15 minuti come abbiamo scritto. Ovviamente il tutto non è certo il massimo dell’efficenza (specie se ogni 15 minuti utilizzate processi che fanno molto I/O oppure ad elevata complessità spazio-temporale), in quanto potremmo agire, in alternativa, in modalità asincrona, ovvero solo “on demand“, o se preferite al verificarsi di una certa condizione (cosa che esula dagli scopi di questo tutorial).
Cron-job: due tipologie, di sistema e “ad uso utente”
In generale i sistemi Linux (nel caso dei miei test, Debian) prevedono l’uso sia di cron-job di sistema (prioritari rispetto al resto) che ad uso utente: ovviamente molto cambia a livello di permessi e “visibilità ” per l’uno e per l’altro, e tutto dipende da cosa dovete gestire. In generale comunque l’idea è quella di usare una stringa di simboli per rappresentare la temporalità (ovvero “ogni quanto” agire) e subito dopo si inserisce lo script, che potrebbe essere un file PHP come, ad esempio, uno script shell bash.
Formato dei cron-tab
Solitamente il formato della stringa “temporale” è il seguente:
MIN ORA GIORNO MESE GIORNO_SETTIMANA COMANDO
ovvero:
- MIN = minuti [1-60]
- ORA = orario [1-24]
- GIORNO = giorni [1-31]
- MESE = mese [1-12]
- GIORNO_SETTIMANA = 1=Sunday, 2=Monday, …
Esempi pratici di cron (ogni giorno, ogni giorno lavorativo, ogni giorno specifico, …)
Alcuni esempi pratici saranno, credo, d’aiuto a capire di cosa parliamo.
0 0 * * * -- ogni giorno a mezzanotte 0 0 * * 1-5 -- ogni giorno lavorativo a mezzanotte 0 0 1,15 * * -- ogni 1 e 15 del mese a mezzanotte 0 0 1 * 5 -- ogni 1 del mese ed ogni venerdଠa mezzanotte * * * * * comando #esegui ogni minuto 30 * * * * comando #esegui ogni mezz'ora 45 6 * * * comando #esegui alle 6:45 ogni giorno 45 18 * * * comando #esegui alle 18:45 ogni giorno 00 1 * * 0 comando #esegui alle 1:00 AM ogni Domenica 00 1 * * 7 comando #esegui alle 1:00 AM ogni Lunedì 00 1 * * Sun comando #esegui alle 1:00 AM ogni Lunedì 30 8 1 * * comando #esegui alle 8:30 il primo giorno di ogni mese
Configurare i cron job di WordPress via crontab di Linux
Molto semplice!
Passo 1, editare il file wp-config.php ed impostare:
define('DISABLE_WP_CRON', true);
Passo 2, impostare un crontab di questo tipo:
# cronjob di WP, ogni mezz'ora */30 * * * * wget --delete-after https://trovalost.it/wp-cron.php
Potete anche sperimentare tempi di aggiornamento differenti, ma in genere si usano o crontab ogni mezz’ora oppure al massimo ogni ora. Metterli troppo frequenti rischia di compromettere la stabilità del server o sovraccaricarlo, mentre al contrario metterli troppo rari nella giornata rischia di mantenere WordPress non sincronizzato o non aggiornato.
Altri esempi pratici da riutilizzare
Backup due volte al giorno:
00 11,16 * * * /home/user123/bin/incremental-backup
Ogni giorno in orario di lavoro:
00 09-18 * * * /home/user123/bin/check-db-status
Ogni giorno in orario di lavoro da lunedଠa venerdà¬:
00 09-18 * * 1-5 /home/user123/bin/check-db-status
Immagine tratta da : creepypasta
👇 Da non perdere 👇
- 📈 Analizza Cellulari 📱
- 🔐 AI che dolor, Chat
- 🎯 Targetizza Database SQL 🗄
- 📊 Analizza Errori più comuni 📛
- 🚧 Costruisci Evergreen 📟
- 👩💻 Programma Gratis 🎉
- 💻 Configura Hosting a confronto 💑
- 🔒 Conosci Hosting reti e domini 💻
- 👩💻 Tapioca Informatica 🖥
- 💻 Iconizza Internet 💻
- 🔒 Gestisci Lavoro 🔧
- 💡 Mostra Marketing & SEO 🌪
- 🔑 Apprendi Meteo ⛅
- 🤯 Visiona Mondo Apple 🍎
- 🔍 Supervisiona Mondo Domini 🌐
- 🚀 Metti in cloud monitoraggio servizi online 📈
- 🔮 Anatomizza Nuove tecnologie 🖥
- 🔒 Antani PEC e firma digitale 📩
- 👀 Prematura Programmare 🖥
- 🎮 Lonfa Scrivere 🖋
- 🔒 Conosci Servizi di SMS 📶
- 👀 Guarda Sicurezza informatica e privacy digitale 🖥
- 🎮 Ricorda Siti web 🌎
- 🤖 Ottimizza Spiegoni 🎓
- 🧠 Neuralizza Svago 🎈
- 📡 Quantizza Usare Excel 🌀
- 🤖 Sovrascrivi Windows 😲
- 🎨 Personalizza Wireless 🚁
- 🔑 Decifra WordPress 🤵
- 💬 Il nostro canale Telegram: iscriviti
- 🟡 Perchè l’hosting fatto in casa non ha più senso
- 🔴 Cosa fare se WhatsApp non funziona (problemi whatsapp)
- 🔴 Che cosa significa feedback aptico