versione 1.04, giugno 2026
|
|
Michele Liberi mail: mliberi@gmail.com cell: +393485211456 telegram: @MicheleLiberi |
gcron è uno schedulatore che permette di definire e gestire un insieme di JOB in un unico database centralizzato, ma che poi verranno eseguiti su un insieme di macchine (raggiungibili via TCP/IP), anche con sistemi operativi diversi.
Il gcron è un'evoluzione del concetto del crontab (strumento standard del mondo UNIX), con molte funzionalità aggiuntive.
La prima differenza, importantissima, è che il crontab lavora localmente, per cui un amministratore di sistema che si trovi nelle condizioni di amministrare più servers nella stessa rete dovrà gestire contemporaneamente più tabelle di crontab, una per ogni macchina. Il gcron consente di avere un'unica tabella, multi server e multi utente, che può quindi essere gestita in modo assai più agevole su un solo server. L'esecuzione dei comandi avviene remotamente, a mezzo del comando rxc.
La gestione centralizzata dei JOB consente di gestire in modo semplice e naturale quelle schedulazioni che non sono legate ad un server fisico, ma sono invece legate ad un servizio ad alta disponibilità che può migrare su più nodi di un cluster. Ad esempio un resource group di un cluster HACMP (IBM AIX).
Per stabilire quando un JOB dovrà essere posto in esecuzione, oltre ai classici parametri del crontab (ore, minuti, giorno, mese, giorno della settimana), gcron gestisce un ulteriore parametro T a mezzo del quale è possibile specificare un tempo minimo che deve passare tra un'esecuzione e la successiva. In questo modo è assai semplice definire schedulazioni che devono essere avviate ad intervalli di tempo regolari, ad esempio ogni due ore.
Il crontab non dà nessun supporto per la gestione dei log, gcron invece salva il log (stdout+stderr) di ogni JOB posto in esecuzione ed il relativo return code. Questi log possono essere successivamente consultati dalla GUI oppure direttamente su filesystem. Per ogni schedulazione gcron mantiene solo gli ultimi N logfile, il parametro N è contenuto nella definizione del JOB. In questo modo l'area dedicata ai logfile rimane più o meno stabile in termini di spazio disco occupato.
gcron mette in esecuzione un JOB solo se la precedente esecuzione è terminata. Permette però (parametro maxT) di gestire un timeout, cioè un tempo massimo di esecuzione del JOB. Se allo scadere del tempo massimo il JOB è ancora in esecuzione, verrà automaticamente terminato.
In caso di return code diverso da zero gcron invia il file di log via e-mail ad una lista di utenti (parametro rcpts). Tale invio può avvenire opzionalmente anche in caso di esecuzione terminata senza errori (parametro info).
Un JOB può essere disattivato (parametro active), in tal caso rimane definito, ma non verrà più posto in esecuzione.
Particolarmente importante è il parametro LRs a mezzo del quale è possibile far partire il JOB solo previa allocazione di una o più risorse logiche. Le risorse logiche sono simili a dei semafori, che però possono avere grado di parallelismo maggiore di uno. Utilizzando le risorse logiche un JOB può essere sincronizzato con altri JOB definiti indipendentemente.
Il gcron ha una triplice natura:
In modalità servizio il gcron si comporta come un dèmone: rimane sempre attivo e ogni minuto verifica se ci sono JOB pronti per essere eseguiti ed eventualmente li lancia. Per attivare la schedulazione il gcron deve essere lanciato, una sola volta, con opzione -daemon, ad esempio alla partenza della macchina. Non è obbligatorio lanciare il dèmone, in alternativa è possibile lanciarlo ogni minuto tramite il crontab.
In modalità comando gcron può essere utilizzato per:
La modalità applicazione web è quella full optional.
Un JOB gcron ha le seguenti caratteristiche:
Per ulteriori informazioni sulla sintassi di attivazione e sulle opzioni disponibili lanciare il comando con l'opzione -h.
(c) M. Liberi, last updated: 2026-06-15