versione 1.03, 1 settembre 2022
![]() | ![]() |
Michele Liberi mail: mliberi@gmail.com cell: 3485211456 |
Si tratta di un'applicazione WEB sviluppata con WOHA per gestire in modo centralizzato le attività automatiche da schedulare su un insieme di macchine. 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 lavori 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 lavoro 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 lavoro 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 logfiles, il parametro N è contenuto nella definizione del lavoro. In questo modo l'area dedicata ai log files rimane più o meno stabile in termini di spazio disco occupato.
Gcron mette in esecuzione un lavoro solo se la precedente esecuzione è terminata. Permette però (parametro maxT) di gestire un timeout, cioè un tempo massimo di esecuzione del lavoro. Se allo scadere del tempo massimo il lavoro è 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 lavoro 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 lavoro 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 lavoro può essere sincronizzato con altri lavori definiti indipendentemente.
Il comando gcron può essere utilizzato anche direttamente da linea di comando per:
Per attivare la schedulazione il gcron deve essere lanciato, una sola volta, con opzione -daemon, ad esempio alla partenza della macchina.