In cosa differisce Upstart??
Upstart ha un modello per avviare qualsiasi lavoro disponibile quando si verifica l'evento. Confronta questo con systemd, che avvia i processi che hanno tutti gli altri sistemi in esecuzione. La differenza principale è che Upstart è in attesa di eventi e systemd sta coordinando le dipendenze. Entrambi i sistemi possono eseguire script regolari ed entrambi cercano di avviarsi in parallelo. Poiché le differenze sono così piccole, gli script Upstart di solito possono essere chiamati semplicemente con un file di servizio systemd. Possono anche eseguire entrambi file systemV invariati. In effetti, entrambi cercano una vecchia struttura di file systemV per impostazione predefinita. La grande differenza è che Upstart cerca eventi definiti per avviare qualsiasi cosa. Quindi, se vuoi aggiungere il tuo servizio, devi capire in quale contesto hai bisogno del tuo servizio. Di solito questo è facile poiché vorrai qualcosa che venga eseguito, ad esempio, sul tuo desktop. Il desktop inizia con l'evento runlevel 5, quindi lo imposti nel tuo script. Per systemd, al contrario, questo è l'obiettivo grafico. In upstart, hai anche altri eventi che puoi usare come montaggio, montaggio e richiesta della tastiera. Questi sono gestiti con systemd tramite socket e dbus.
Come si migrano gli script??
Hai tutti gli script Upstart in /etc/init, i loro nomi sono nomi di lavoro con un'estensione 'conf'. Gli script non sono eseguibili, puntano solo a uno o più eseguibili che dovrebbero essere eseguiti. In qualsiasi script Upstart, hai definito su quale evento lo script dovrebbe iniziare e quando dovrebbe fermarsi. Dovresti anche avere voci pre-start e post-stop. Questi prepareranno l'ambiente e ripuliranno dopo l'esecuzione. Di seguito è riportato uno script di esempio
descrizione "Una semplice sceneggiatura"avvia su runlevel [2345]
ferma su runlevel [06]
rigenerarsi
env SCRIPT_ENV_VAR='/percorso/del/file.configurazione'
chdir /percorso/a/script/
script bash exec.sh
L'istruzione "exec" dice cosa accadrà quando lo avvierai manualmente. Le direttive start e stop definiscono quando lo script verrà avviato automaticamente. Come puoi vedere, puoi anche impostare la directory in cui verrà eseguito. Ci sono molti altri aspetti di Upstart ma dovresti imparare come migrare fuori.
Affinché questo script funzioni in systemd, è necessario creare un file di servizio.
Unità]Description=Un semplice script
[Servizio]
Ambiente= SCRIPT_ENV_VAR =/percorso/a/file.config
WorkingDirectory=/percorso/di/script
ExecStart=/usr/bin/bash script.sh
Riavvia=sempre
[Installare]
WantedBy=multiutente.bersaglio
Qui puoi vedere che accadono le stesse cose ma con altre parole chiave. Il formato è semplice e al punto. Invece di avere runlevel, indichi quale target vuole il tuo script. Ciò evidenzia che systemd riguarda la dipendenza e l'avvio di cose per l'ambiente specifico. Nota anche che ExecStart punta a un percorso globale, non usa mai un percorso locale.
Dove eccelle??
Upstart è stato progettato per un comportamento parallelo ma è stato anche progettato per essere piccolo. Se lo trovi ancora da qualche parte, sarà nei sistemi incorporati e ChromeOS. Sì, ChromeOS ce l'aveva. Il motivo è che è stato costruito su Ubuntu dall'inizio, nel momento in cui Ubuntu aveva upstart come sistema iniziale predefinito. Da allora ChromeOS è passato all'utilizzo di Gentoo come base.
Conclusione
Upstart è un argomento interessante ma soprattutto storico. Potresti averne bisogno solo se ti imbatti in vecchi sistemi. L'alternativa più comune su Linux è ora systemd. Se hai delle riserve su systemd, dovresti cercare altri sistemi minimi minimal. Uno interessante è il suckless, sinit. Supporta tre segnali e devi scrivere tu stesso tutti gli script o modificare gli script da qualcun altro. Questo può essere un esercizio interessante ma è utile solo se stai lavorando su un sistema molto minimale e specializzato.