Devo realizzare uno script in bash che, ad intervalli regolari mandi in esecuzione uno specifico comando.
Benche l'aspetto tecnico, per quanto riguarda lo sviluppo dello script non mi crea problemi, c'è un aspetto che non so valutare, e per il quale chiedo lumi.
Il comando che deve andare in esecuzione, ogni venti secondi è questo:
Codice: Seleziona tutto
gcloud dataproc clusters list
Questo script mi restituisce lo stato del cluster che ho in cloud e, in funzione di questo status, continua a sottomettere rochieste di tipo "start", e non appena sarà disponibile un'istanza con le specifiche che mi servono, la vvierà.
La domanda è: esiste qualche servizi di sistema, preposto a sottomettere una specifica richiesta dell'utente ad intervalli regolari? Sarei tentato di farlo inchiodando lo script in bash all'interno di un ciclo iterativo (for od if), ma non credo sia la soluzione migliore. Ho il sospetto che, se inchiodassi l'esecuzione in un ciclo if, questa potrebbe saturare rapidamente le risorse di sistema, con un'infinita serie di chiamate di sistema ravvicinate, e lo voglio evitare. Vorrei che lo script in bash si connetta all'istanza cloud, controlli che il cluster non sia già avviato e, se non lo è, sottometta una richiesta di avvio. Completato questo tas, dovrebbe poi uscire. Uscito, si ripete il ciclo, finche il cluster non è avviato, oppure continua l'esecuzione finche non lo arresto io manualmente, oppure arresto la macchina.
Se proprio non troverò altre soluzioni, proverò ad usare cron, ma per imparare anche tecniche nuove chiedo: trasformare il mio script in bash in un file di unit e poi avviarlo manualmente con
Codice: Seleziona tutto
sudo systemctl start mio servizio
In alternativa, tecniche piu elaborate, come l'impiego di pipe nominali (mkfifo), oppure staccando un thread?
Grazie mille.