Domanda Come abilitare o disabilitare i servizi?


Ho letto su come abilitare e disabilitare i servizi in Ubuntu e sembra che ci siano diverse possibilità per gestirli.

Il primo metodo che ho trovato è update-rc.d aggiungere nuovi servizi all'avvio, che mira al /etc/init.d cartella e il suo contenuto.

L'altro che ho trovato è quello di modificare .conf file nel /etc/init cartella.

Qual è il modo consigliato per abilitare / disabilitare / aggiungere servizi e perché?

Potresti per favore dare un esempio passo passo a prova di proiettile su come aggiungere un servizio in Ubuntu e abilitarlo e disabilitarlo?


761
2017-12-29 21:03


origine


Per il collegamento in rete, vedere: askubuntu.com/questions/230698/... - Jorge Castro
Questo sarebbe utile per quelli bloccati su Fedora 12 e sono atterrati qui. Nel caso linkrot chkconfigè quello che stai cercando. - Bleeding Fingers
Si noti che la risposta per Ubuntu 14.04 è ancora mancante qui. - Reinier Post
@MarcelloNuccio: A partire da Ubuntu 15.04, Upstart è stato deprecato a favore di Systemd. - Dan Dascalescu


risposte:


Ci sono servizi che possono essere abilitati / disabilitati usando la GUI (come la startup applicazione) o il terminale.

Per il terminale hai diverse opzioni. Innanzitutto, apri un terminale (digita "terminale" nel trattino, ad esempio, e aprilo). Poi:

Servizi di abilitazione / disabilitazione temporanea

Per interrompere e avviare i servizi temporaneamente (Non li abilita / disabilita per gli stivali futuri), puoi digitare service SERVICE_NAME. Per esempio:

  • sudo service apache2 stop (Volere STOP il servizio Apache fino al riavvio o fino a quando non lo avvii di nuovo).

  • sudo service apache2 start (Volere INIZIO il servizio Apache supponendo che sia stato fermato prima).

  • service apache2 status (Vi dirà lo STATO del servizio, se è abilitato / in esecuzione di disabilitato / NON in esecuzione.).

  • sudo service apache2 restart (Volere RICOMINCIA il servizio. Questo è più comunemente usato quando hai cambiato, un file di configurazione. In questo caso, se hai modificato una configurazione PHP o una configurazione di Apache. Il riavvio ti salverà dal dover interrompere / iniziare con 2 righe di comando)

  • service apache2 (In questo caso, dal momento che non hai menzionato l'azione da eseguire per il servizio, mostrerà tutte le opzioni disponibili per quel servizio specifico.) Questo aspetto varia a seconda del servizio, ad esempio, con MySQL si accennerà solo che manca un parametro Per altri servizi come il servizio di rete menzionerebbe la piccola lista di tutte le opzioni disponibili.


systemd

A partire da Ubuntu 15.04, Upstart sarà deprecato a favore di Systemd. Con Systemd per gestire i servizi possiamo fare quanto segue:

systemctl start SERVICE - Usalo per avviare un servizio. Non persiste dopo il riavvio

systemctl stop SERVICE - Usalo per fermare un servizio. Non persiste dopo il riavvio

systemctl restart SERVICE - Usalo per riavviare un servizio

systemctl reload SERVICE - Se il servizio lo supporta, ricaricherà i file di configurazione ad esso correlati senza interrompere alcun processo che utilizza il servizio.

systemctl status SERVICE - Mostra lo stato di un servizio. Indica se un servizio è attualmente in esecuzione.

systemctl enable SERVICE - Attiva il servizio, al prossimo riavvio o al prossimo evento di avvio. Persiste dopo il riavvio.

systemctl disable SERVICE - Disattiva il servizio al prossimo riavvio o all'evento di stop successivo. Persiste dopo il riavvio.

systemctl is-enabled SERVICE - Controllare se un servizio è attualmente configurato per l'avvio o meno al successivo riavvio.

systemctl is-active SERVICE - Controllare se un servizio è attualmente attivo.

systemctl show SERVICE - Mostra tutte le informazioni sul servizio.

sudo systemctl mask SERVICE - Disabilita completamente un servizio collegandolo a /dev/null; non è possibile avviare il servizio manualmente o abilitare il servizio.

sudo systemctl unmask SERVICE - Rimuove il collegamento a /dev/null e ripristina la capacità di abilitare e / o avviare manualmente il servizio.


UPSTART (Deprecato dal 15.04)

Se vogliamo utilizzare la modalità Upstart ufficiale (nota che, per il momento, non tutti i servizi sono stati convertiti in Upstart), potremmo usare i seguenti comandi:

status SERVICE - Questo ci dirà se un servizio convertito è in esecuzione o meno. Si noti che questo è deprecato a favore di start, stop, status & restart. Ci dirà anche se un servizio non è stato ancora convertito in upstart:

Un servizio convertito tipicamente produrrebbe lo stato corrente (avvio, in corso, arresto ...) e l'ID del processo. Un servizio non convertito darebbe un errore su un lavoro sconosciuto.

Alcune scorciatoie possono funzionare solo con service comando precedente ma non con i comandi seguenti a meno che non siano convertiti al 100% in servizi upstart:

  • INIZIO - sudo start mysql

  • STOP - sudo stop mysql

  • RICOMINCIA - sudo restart mysql

  • STATO - sudo status smbd

Abilitazione / disabilitazione di un servizio

Per attivare o disattivare un servizio in modo permanente, è necessario:

echo manual | sudo tee /etc/init/SERVICE.override

dove la stanza manual bloccherà Upstart dal caricamento automatico del servizio all'avvio successivo. Qualsiasi servizio con il .override la fine avrà la precedenza sul file di servizio originale. In seguito, potrai avviare il servizio solo manualmente. Se non vuoi questo, semplicemente elimina il .override. Per esempio:

echo manual | sudo tee /etc/init/mysql.override

Inserirà il servizio MySQL manual modalità. Se non vuoi questo, dopo puoi semplicemente farlo

sudo rm /etc/init/mysql.override

e riavvia il servizio per riavviarsi automaticamente. Ovviamente per abilitare un servizio, il modo più comune è installarlo. Se installi Apache, Nginx, MySQL o altri, si avvia automaticamente al termine dell'installazione e si avvia ogni volta che si avvia il computer. La disabilitazione, come sopra menzionato, farà uso del servizio manual.


757
2017-12-29 21:26



Hai bisogno di aggiungere .service ad ogni comando? systemctl mongod status ha funzionato bene - Dan Dascalescu
@DanDascalescu no non lo hai fatto, ma permettimi di chiarire che lì. - Luis Alvarado♦
Il file .override deve essere inserito in /etc/init.d/, cioè dove si trova il servizio? - Obi Wan - PallavJha
Perché Upstart è deprecato in 15.04? qual è il modo giusto per eseguire script all'avvio / riavvio in Ubuntu 16.04 o successivo? - Kamalakannan J
@ KamalakannanJ hai usato i livelli RC? (es. /etc/rc0.d) o /etc/rc.local? - Luis Alvarado♦


Attualmente ci sono in realtà tre modi diversi per avviare il software come servizio in Ubuntu, SysV, parvenu e systemd. Un servizio è definito qui come un programma eseguito dal sistema in background, al contrario di uno avviato ed eseguito direttamente dall'utente.

SysV

Il modo tradizionale per avviare i servizi in Linux era inserire uno script in /etc/init.de quindi utilizzare il update-rc.d comando (o in distribuzioni basate su RedHat, chkconfig) per abilitarlo o disabilitarlo.

Questo comando utilizza una logica leggermente complicata per creare collegamenti simbolici /etc/rc#.d, che controlla l'ordine di iniziare i servizi. Se corri ls /etc/rc2.d puoi vedere l'ordine in cui i servizi verranno uccisi con un nome simile al file K##xxxx e ha iniziato con i nomi dei file S##xxxx. Il ## in S##xxxx significa un "ordine di partenza" per il servizio xxxx. Al contrario, il ## in K##xxxx significa l'ordine di uccisione per il servizio xxxx.

Uno dei principali problemi con SysV è stato quello all'avvio del sistema, tutto doveva essere fatto in serie, una cosa dopo l'altra, rendendo i tempi di avvio del sistema veramente lenti. Sono stati fatti tentativi per parallelizzare questo, ma erano aleatori e difficili da sfruttare appieno. Questa era la ragione principale per cui parvenuè stata creata.

parvenu

Upstart utilizza i file di definizione lavoro in /etc/init definire su quali eventi deve essere avviato un servizio. Quindi, mentre il sistema si avvia, l'upstart elabora vari eventi e quindi può avviare più servizi in parallelo. Ciò consente loro di utilizzare appieno le risorse del sistema, ad esempio, avviando un servizio associato al disco mentre è in esecuzione un altro servizio associato a CPU o mentre la rete è in attesa di un indirizzo IP dinamico da assegnare.

È possibile visualizzare tutti i file di lavoro di upstart eseguendo ls /etc/init/*.conf

Lasciatemi solo fermarmi qui e dire che se non sai cos'è un servizio, o cosa fa, NON disabilitarlo!

Non tutti i servizi sono stati convertiti in upstart. Mentre lavoravo al team dei server di Canonical negli ultimi mesi, ho lavorato su un certo numero di file di lavoro convertiti, e la parte più bella è che consente di liberarsi di tutta la sceneggiatura "magica" e di inserire un pochi comandi qua e là per definire esattamente come avviare il servizio e nient'altro. Ma per ora, solo una manciata di servizi di rete tradizionali, come calamaro e samba, sono stati convertiti.

È un servizio basato su upstart?

Per capire se un servizio è basato su upstart, è possibile eseguire il comando di stato:

status servicename

Se è un parvenu lavoro, mostrerà questo:

$ status statd
statd start/running, process 942

Ma se non lo è, vedrai qualcosa di più simile a questo:

$ status apache2
status: Unknown job: apache2

In questo caso, apache2 non è stato convertito a parvenu. Quindi, per disabilitare apache2 tu corri

sudo update-rc.d apache2 disable
sudo service apache2 stop

Disabilitare i servizi (lavori) in upstart

Le definizioni di lavoro di Upstart non hanno un update-rc.d comando. Per disabilitare il lavoro, è necessario modificare direttamente il file di lavoro per disabilitarlo. Ci sono due modi per farlo.

Se si desidera essere ancora in grado di avviarlo manualmente, è necessario commentare start on condizione. Dì che vuoi installare samba, ma non farlo avviare automaticamente. Ecco il file di lavoro (in natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

Disabilitare samba, puoi solo mettere un # di fronte a "start on local-filesystemsSi noti che mentre non si riavvia all'avvio, è necessario fermarlo questa volta con

sudo service smbd stop

Se, tuttavia, non vuoi mai samba per iniziare, suggerirei di rimuovere effettivamente il pacchetto. Se, tuttavia, vuoi installarlo, ma non è avviabile, puoi anche fare:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Disabilitare un servizio usando la stanza start / stop (a partire da 11.04)

A partire dalla versione di upstart che sarà in 11.04, c'è una nuova parola chiave che disabilita il start on e stop on strofe: manual. Quindi un altro modo per disattivare il servizio a partire dalla 11.04 è:

echo 'manual' | sudo tee /etc/init/mysql.override

# command from root shell
echo manual >> /etc/init/mysql.override

Puoi creare un override file per disabilitare un servizio senza modificare la definizione del lavoro, semplicemente inserendo il file manual parola chiave in esso.


335
2018-01-06 18:25



Sembra che anche l'11.04 abbia l'override. Così echo manual >> /etc/init/<service>.override è preferibile in quanto lascia intatto il file .conf originale. Ad ogni modo, è ancora un peccato che un tale abilitazione / disabilitazione di base richieda 3 anni per svilupparsi, e non esiste una GUI per questo. - MestreLion
update-rc.d è ciò che conta davvero - Tim
sembra molto più facile gestire l'argomento originale rispetto alla risposta che è stata contrassegnata come la risposta definitiva del poster della domanda originale. Grazie! :) - Henning
Nel mio caso, il file /etc/init/ssh.conf esiste ma status ssh e status sshd entrambi dicono "Lavoro sconosciuto". Questa risposta non sembra affrontare questa possibilità? - Brian Z
status ssh mi dà anche "Lavoro sconosciuto", ma service ssh status per me va bene - ptim


sysv-rc-conf

Prova a usare sysv-rc-conf

sudo apt-get install sysv-rc-conf

e iniziare a gestire i servizi, eseguire

sudo sysv-rc-conf

Che farà apparire la finestra interattiva come questa

enter image description here

Puoi inoltre navigare tra le pagine usando Ctrl+n per la prossima pagina e Ctrl+p per la pagina precedente. È possibile abilitare e disabilitare i servizi selezionando SPACEsui runlevel desiderati.

Lavoro-Admin

Un altro sostituto sarebbe Lavoro-Admin installando attraverso

sudo apt-get install jobs-admin

Che fornisce anche una GUI come questa

jobs-admin preview

Per mostrare più lavori, devi spuntare il Mostra lavori protetti dal suo menu.

chkconfig

E la terza opzione sarebbe chkconfig,

sudo apt-get install chkconfig

Può essere utilizzato tramite CLI chkconfig, mostrando l'elenco dei lavori di accensione / spegnimento. Inoltre possiamo visualizzare i servizi di sistema usando chkconfig –list

I servizi possono essere attivati ​​utilizzando

chkconfig <service> on

I servizi possono essere disattivati ​​utilizzando

chkconfig <service> off

E possiamo anche aggiungere il nostro servizio, usando uno script init corretto con intestazioni appropriate.

chkconfig --add <service>

update-rc.d

E un'altra opzione può essere riferita qui update-rc.d , spiegato brevemente Qui.

Si noti che per Ubuntu Server 12.04, update-rc.d  è usato al posto di chkconfig.


121
2018-06-28 18:00



sul server ubuntu: Package chkconfig is not available, but is referred to by another package. - pwned
@ pwned Sei libero di modificare e pubblicare le informazioni aggiornate riguardanti l'edizione del server. Grazie. - atenz
Ho fatto come hai suggerito, ora è in corso la revisione tra pari. - pwned
posti di lavoro-admin non permette di cambiare lavoro (Ubuntu 14.04), producendo invece un crash report ;-) - Sadi
sysv-rc-conf non è adatto per l'uso con upstart o systemd, è chiaramente per il vecchio sistema System 5 rc, che non è stato il predefinito su Ubuntu Linux per quasi un decennio. Debian Bug # 791689 lo riconosce e si chiede perché non è stato contrassegnato come in conflitto con systemd. - JdeBP


Per quelli di noi che eseguono Ubuntu su ssh, penso che l'opzione migliore sia rcconf - un programma basato su testo:

sudo apt-get install rcconf
sudo rcconf

alt text

Navigare con i tasti di tabulazione e freccia, premere la barra spaziatrice per abilitare / disabilitare. Le modifiche sono persistenti durante i riavvii.

Screenshot preso in prestito da questo blogpost, che mostra anche sysv-rc-conf - uno strumento simile che ti permette anche di impostare il runlevel. (Per coloro che si preoccupano abbastanza dei runlevel per desiderare di cambiarli :)

Sfortunatamente, rcconf non funziona con upstart (servizi elencati in /etc/init/*), solo con il meccanismo tradizionale (ls -l /etc/init.d/* - quelli che non sono collegamenti simbolici).

Fortunatamente, molti dei servizi rilevanti quando ssh-in su un server (Apache, Tomcat, mdadm, boinc-client ...) non sono stati ancora spostati in upstart.


48
2018-01-06 18:44



Funziona ancora con Upstart? - oKtosiTe
Sfortunatamente no. Ma ha funzionato per tutti i casi che volevo cambiare: i lavori di upstart sembrano essere per lo più cose che non voglio disabilitare: clock hardware, log daemon, network ecc. (Sul server di Ubuntu, almeno). Ma è qualcosa di cui essere a conoscenza (non ero :), ho aggiornato il post. - j-g-faustus
Sfortunatamente mysql è stato convertito in upstart. E questo è un servizio che uso solo quando sto facendo qualche progetto. - MestreLion
C'è un bug con rcconf su Ubuntu 12.04 che impedisce l'avvio del programma. Per risolvere il problema è necessario installare il pacchetto di dialogo. - devius
Poiché questa risposta è stata scritta, update-rc.d è stato cambiato, e alcune delle sue funzionalità deprecate sono state rimosse. Il bug Debian # 727735 nota che rcconf non è stato modificato per corrispondere. E no, rcconf non funziona con systemd, quindi non è applicabile a nessuno dei sistemi init predefiniti per Ubuntu Linux negli ultimi dieci anni. - JdeBP


Ho scoperto che c'è questo strumento GUI, qualcosa come BUM ma compatibile con Upstart:

  • Lavoro-Admin

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Ma è troppo semplice e non consente di cambiare "lavori protetti" (che cos'è quel jobb? Apple ha Jobs, il sistema operativo ha demoni!) - kakaz
Non autorizzo nemmeno a cambiare "lavori non protetti" (Ubuntu 14.04), producendo invece un rapporto di crash ;-) - Sadi


La modifica del file di configurazione upstart esistente (come descritto sopra) non è una buona idea. Un pacchetto aggiornato potrebbe fornire una configurazione aggiornata e dovresti ripetere le modifiche più e più volte.

Dando un'occhiata a man 5 init si troverà una soluzione più appropriata: usando una configurazione di override. Breve esempio: supponiamo di avere un servizio chiamato "foobar", quindi ci sarebbe un file chiamato /etc/init/foobar.conf con la sua configurazione upstart. Ora non vuoi rimuovere quel file, né modificarlo, ma non vuoi che questo servizio venga eseguito? Quindi posiziona un oltrepassare file accanto ad esso: /etc/init/foobar.override, contenente (opzionalmente l'intestazione con la descrizione e) invece il start on / stop on linee si posiziona una linea con una parola: manual. In questo modo puoi dire a upstart di usare fondamentalmente il foobar.conf, ma sostituisce la definizione di avvio per avviare solo quel servizio quando imposto manualmente (via service foobar start nel nostro esempio).


12
2018-06-30 20:27





C'è anche il Boot-Up Manager.

Installare: sudo apt-get install bum

Ulteriori informazioni: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



Non dimenticare di controllare il pulsante "Avanzate". - not2qubit