Plesk Cron: aggiungere task schedulati

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 minuti
  • 0 0 1 * *: il primo di ogni mese a mezzanotte
  • 0 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:

  1. Disabilitare wp-cron in wp-config.php: define('DISABLE_WP_CRON', true);
  2. 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.

Hai trovato utile quest'articolo?