I task schedulati in Plesk
Plesk offre un'interfaccia grafica al cron di Linux (o Task Scheduler su Windows) per programmare l'esecuzione di comandi e script a intervalli regolari. E' utile per:
- Eseguire backup periodici
- Inviare newsletter
- Aggiornare cache, statistiche o feed
- Eseguire task di manutenzione di CMS (WordPress cron, Laravel scheduler, Symfony Messenger)
- Sincronizzare dati con servizi esterni
Accedere al pannello Cron
I task schedulati sono gestiti a livello sottoscrizione (utente cliente) o server (amministratore).
Lato cliente: Subscriptions → dominio.it → Scheduled Tasks.
Lato admin: Tools & Settings → Scheduled Tasks.
Aggiungere un nuovo task
Cliccare Add Task. Il form chiede:
- Task type:
- Run a command: esegue uno script shell
- Fetch a URL: fa una HTTP request
- Run a PHP script: esegue un .php con la versione PHP del dominio
- Run: frequenza con quattro presets (Cron style, oppure semplificati: every hour, every day, every week, every month) o syntax cron
- Command: il comando o l'URL
- Description: nome descrittivo
- Notify:
- Each time: email ad ogni run
- On errors only: solo se exit code non zero o output stderr
- Don't notify: silenzioso
Sintassi cron
La sintassi classica e':
minuto ora giorno-del-mese mese giorno-della-settimana
Esempi:
0 3 * * *: ogni giorno alle 3:00*/15 * * * *: ogni 15 minuti0 0 1 * *: il primo di ogni mese a mezzanotte0 9 * * 1-5: dal lunedi' al venerdi' alle 9:00
Esempi pratici
WordPress cron via WP-CLI:
cd /var/www/vhosts/dominio.it/httpdocs && /opt/plesk/php/8.3/bin/php /usr/local/bin/wp cron event run --due-now
Laravel scheduler:
cd /var/www/vhosts/dominio.it/httpdocs && /opt/plesk/php/8.3/bin/php artisan schedule:run
Configurarlo a * * * * * (ogni minuto).
Backup giornaliero database:
mysqldump --defaults-file=/etc/psa/.psa.shadow miodb > /var/www/vhosts/dominio.it/backups/db-$(date +\%F).sql
Fetch URL per cron WordPress alternativo:
https://dominio.it/wp-cron.php?doing_wp_cron
Variabili d'ambiente
I task cron NON ereditano l'ambiente shell completo. PATH e' limitato. Per usare comandi non standard, usare path assoluti:
/usr/bin/curl ... /opt/plesk/php/8.3/bin/php ...
PHP CLI vs PHP web
I task PHP eseguiti via cron usano PHP-CLI, che ha php.ini separato da PHP-FPM. Le direttive (memory_limit, max_execution_time) possono essere diverse. Per modificare il php.ini CLI di una versione:
/opt/plesk/php/8.3/etc/php.d/
Disabilitare temporaneamente un task
Nella lista dei task, c'e' una checkbox On: deselezionarla disabilita il task senza eliminarlo.
Output e log
L'output dei task e' incluso nelle notifiche email (se attive). Per debug avanzato, redirigere stdout/stderr a file:
/usr/local/bin/mio-script.sh >> /var/log/mio-script.log 2>&1
Limiti e considerazioni
- I task fetch URL hanno un timeout (default 60s)
- Cron jobs vengono eseguiti come l'utente di sistema della sottoscrizione
- Su Windows, Plesk usa Task Scheduler di Windows: la sintassi e' diversa, ma l'interfaccia Plesk e' uniforme
Wp-cron disabilitato + cron Plesk
WordPress di default usa wp-cron, ma viene triggerato solo quando un'utente visita il sito. Su siti a basso traffico, wp-cron e' inaffidabile. Pattern consigliato:
- Disabilitare wp-cron in wp-config.php:
define('DISABLE_WP_CRON', true); - Schedulare un cron Plesk che esegue wp-cron ogni 5 minuti via WP-CLI
Timezone
I cron job Plesk usano il timezone del server (di solito UTC). Per programmare in timezone diverso, usare il prefisso TZ=Europe/Rome nel comando o impostare il timezone della sottoscrizione.
Lock file per evitare run sovrapposti
Per task lunghi che potrebbero sovrapporsi (se il task precedente non e' finito):
flock -n /tmp/mio.lock /opt/plesk/php/8.3/bin/php script.php
flock impedisce esecuzione parallela.
Cron per backup database
Esempio backup con rotazione 7 giorni:
0 2 * * * mysqldump --defaults-file=/etc/psa/.psa.shadow miodb | gzip > /backups/db-$(date +\%u).sql.gz
Usa il giorno della settimana come nome file: si auto-ruota su 7 giorni.
Healthcheck dei cron
Servizi come healthchecks.io monitorano se i cron eseguono come previsto. Configurare il cron per fare un ping al servizio dopo ogni esecuzione: se manca, viene inviato alert.
Audit log cron
I cron Plesk sono loggati in /var/log/cron:
grep CRON /var/log/cron | tail -50
Mostra le ultime esecuzioni con timestamp e exit code.
Cron job e environment
I cron Plesk hanno PATH e environment minimi. Per usare comandi non standard, dichiarare PATH esplicito:
PATH=/usr/local/bin:/usr/bin:/bin 0 3 * * * mio-comando-custom
Error reporting via email
Configurare Plesk per inviare email solo su errori:
- Output stdout/stderr viene catturato
- Solo se exit code != 0 viene inviata email
- Riduce spam delle notifiche
Sicurezza: limitare cron access
Lato amministratore, e' possibile disabilitare l'accesso ai task schedulati per certi customer (es. shared hosting low-tier). Configurazione nei Service Plan, sezione Permissions.
Sistemi di scheduling avanzati
Per scheduling complesso (DAG di dipendenze, retry policy, observability) considerare di affiancare a cron tools come Airflow, Dagster, Prefect per i flussi business critical.
Cron predefiniti di Plesk
Plesk installa cron job di sistema per la propria manutenzione: backup automatici, rotazione log, update database statistiche, garbage collection. Sono visibili in /etc/cron.d/plesk-*. Non modificarli manualmente.
Hai bisogno di aiuto?
Se vuoi gestione Plesk dal team di G Tech Group, scrivici tramite il modulo di contatto.