Vraag Hoe kan ik services in- of uitschakelen?


Ik las over het inschakelen en uitschakelen van services in Ubuntu en het lijkt erop dat er verschillende mogelijkheden zijn om ze te beheren.

De eerste methode die ik heb gevonden is update-rc.d om nieuwe services toe te voegen aan het opstarten, die op de /etc/init.d map en de inhoud ervan.

De andere die ik vond, is om te bewerken .conf bestanden in de /etc/init map.

Wat is de aanbevolen manier om services in / uit te schakelen / toe te voegen en waarom?

Kun je alsjeblieft een kort, kogelvrij, stap voor stap voorbeeld geven over hoe je een dienst in Ubuntu kunt toevoegen en in- en uitschakelen?


761
2017-12-29 21:03


oorsprong


Zie voor netwerken: askubuntu.com/questions/230698/... - Jorge Castro
Deze zou nuttig zijn voor degenen die vastzitten op Fedora 12 en hier zijn geland. In het geval linkrot chkconfigis wat je zoekt. - Bleeding Fingers
Merk op dat het antwoord voor Ubuntu 14.04 hier nog steeds ontbreekt. - Reinier Post
@MarcelloNuccio: beginnend met Ubuntu 15.04 is Upstart vervangen door Systemd. - Dan Dascalescu


antwoorden:


Er zijn services die kunnen worden ingeschakeld / uitgeschakeld met behulp van de GUI (zoals de startup toepassing) of de terminal.

Voor de Terminal heb je verschillende opties. Open eerst een terminal (Type "terminal" in het streepje en open het bijvoorbeeld). Dan:

Tijdelijke services inschakelen / uitschakelen

Om services te stoppen en te starten tijdelijk (Schakelt ze niet in of uit voor toekomstige boots), u kunt typen service SERVICE_NAME. Bijvoorbeeld:

  • sudo service apache2 stop (Zullen HOU OP de Apache-service tot Reboot of totdat u hem opnieuw start).

  • sudo service apache2 start (Zullen BEGIN de Apache-service ervan uitgaande dat deze eerder is gestopt.).

  • service apache2 status (Zal u de STATUS van de service vertellen, of deze is ingeschakeld / uitgevoerd of uitgeschakeld / NIET actief.).

  • sudo service apache2 restart (Zullen HERSTARTEN de dienst. Dit wordt meestal gebruikt als u een configuratiebestand hebt gewijzigd. In dit geval, als u een PHP-configuratie of een Apache-configuratie hebt gewijzigd. Herstart zal u redden van het moeten stoppen / starten met 2 opdrachtregels)

  • service apache2 (In dit geval, omdat u de ACTIE niet hebt opgegeven om uit te voeren voor de service, zal deze u alle opties tonen die beschikbaar zijn voor die specifieke service.) Dit aspect varieert afhankelijk van de service, bijvoorbeeld met MySQL zou het alleen vermelden dat het mist een parameter. Voor andere diensten zoals netwerkdiensten zou het de kleine lijst van alle beschikbare opties vermelden.


systemd

Beginnend met Ubuntu 15.04 zal Upstart worden vervangen door Systemd. Met Systemd voor het beheer van de services kunnen we het volgende doen:

systemctl start SERVICE - Gebruik het om een ​​service te starten. Blijft niet bestaan ​​na opnieuw opstarten

systemctl stop SERVICE - Gebruik het om een ​​service te stoppen. Blijft niet bestaan ​​na opnieuw opstarten

systemctl restart SERVICE - Gebruik het om een ​​service opnieuw te starten

systemctl reload SERVICE - Als de service dit ondersteunt, worden de bijbehorende configuratiebestanden opnieuw geladen zonder een proces te onderbreken dat de service gebruikt.

systemctl status SERVICE - Toont de status van een dienst. Geeft aan of een service momenteel wordt uitgevoerd.

systemctl enable SERVICE - Schakelt de service in, bij de volgende keer opnieuw opstarten of bij de volgende startgebeurtenis. Het blijft bestaan ​​na opnieuw opstarten.

systemctl disable SERVICE - Schakelt de service uit bij de volgende herstart of bij de volgende stopgebeurtenis. Het blijft bestaan ​​na opnieuw opstarten.

systemctl is-enabled SERVICE - Controleer of een service momenteel is geconfigureerd om te starten of niet bij de volgende keer opnieuw opstarten.

systemctl is-active SERVICE - Controleer of een service momenteel actief is.

systemctl show SERVICE - Toon alle informatie over de dienst.

sudo systemctl mask SERVICE - Schakel een service volledig uit door deze te linken /dev/null; u kunt de service niet handmatig starten of de service inschakelen.

sudo systemctl unmask SERVICE - Verwijdert de link naar /dev/null en herstelt de mogelijkheid om de service in te schakelen en of handmatig te starten.


UPSTART (verouderd sinds 15.04)

Als we de officiële Upstart-manier willen gebruiken (merk op dat momenteel niet alle services zijn geconverteerd naar Upstart), kunnen we de volgende opdrachten gebruiken:

status SERVICE - Dit zal ons vertellen of een geconverteerde service actief is of niet. Houd er rekening mee dat dit wordt vervangen door start, stop, status & restart. Het zal ons ook vertellen of een service nog niet is geconverteerd naar parvenu:

Een geconverteerde service voert meestal de huidige status uit (starten, uitvoeren, stoppen ...) en proces-ID. Een niet-geconverteerde service zou een fout geven over een onbekende baan.

Sommige sneltoetsen werken mogelijk alleen met de service commando hierboven, maar niet met de onderstaande commando's, tenzij ze voor 100% worden geconverteerd naar parate services:

  • BEGIN - sudo start mysql

  • HOU OP - sudo stop mysql

  • HERSTARTEN - sudo restart mysql

  • STATUS - sudo status smbd

Een dienst inschakelen / uitschakelen

Als u wilt dat een service permanent wordt gestart of gestopt, moet u het volgende doen:

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

waar de strofe manual zal Upstart stoppen met het automatisch laden van de service bij de volgende keer opstarten. Elke service met de .override einde heeft voorrang op het originele servicebestand. U kunt de service pas daarna handmatig starten. Als u dit niet wilt, verwijdert u eenvoudig de .override. Bijvoorbeeld:

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

Zal de MySQL-service inzetten manual modus. Als je dit niet wilt, kun je het later gewoon doen

sudo rm /etc/init/mysql.override

en Start opnieuw op om de service automatisch opnieuw te starten. Natuurlijk is het voor het inschakelen van een service de meest gebruikelijke manier om het te installeren. Als u Apache, Nginx, MySQL of anderen installeert, beginnen ze automatisch bij het voltooien van de installatie en worden ze elke keer dat de computer opstart gestart. Uitschakelen, zoals hierboven vermeld, maakt gebruik van de service manual.


757
2017-12-29 21:26



Moet je toevoegen .service voor elke opdracht? systemctl mongod status werkte prima. - Dan Dascalescu
@DanDascalescu nee dat doe je niet, maar laat me dat verduidelijken. - Luis Alvarado♦
Moet het .override-bestand in /etc/init.d/ worden geplaatst, d.w.z. waar de service wordt geplaatst? - Obi Wan - PallavJha
Waarom is Upstart gedeprecieerd in 15.04? wat is de juiste manier om scripts uit te voeren bij het starten / opnieuw opstarten in ubuntu 16.04 of later? - Kamalakannan J
@KamalakannanJ heb je de rc-niveaus gebruikt? (bijv. /etc/rc0.d) of /etc/rc.local? - Luis Alvarado♦


Momenteel zijn er eigenlijk drie verschillende manieren waarop software als een service in Ubuntu kan worden gestart, SysV, Parvenu en systemd. Een service wordt hier gedefinieerd als een programma dat door het systeem op de achtergrond wordt uitgevoerd, in tegenstelling tot een programma dat door de gebruiker is gestart en direct wordt uitgevoerd.

SysV

De traditionele manier om services in Linux te starten was om een ​​script in te plaatsen /etc/init.den gebruik vervolgens de update-rc.d commando (of in op RedHat gebaseerde distributies, chkconfig) om het in of uit te schakelen.

Deze opdracht gebruikt een enigszins gecompliceerde logica om symlinks te maken /etc/rc#.d, die de volgorde van startdiensten bepalen. Als je rent ls /etc/rc2.d je ziet de volgorde waarin services worden gedood met een bestandsnaam zoals K##xxxx en begon met bestandsnamen S##xxxx. De ## in S##xxxx betekent een "startvolgorde" voor service xxxx. Omgekeerd, de ## in K##xxxx betekent de kill-order voor service xxxx.

Een groot probleem met SysV was dat bij het booten van het systeem, alles moest in serie worden gedaan, het een na het ander, waardoor het opstarten van het systeem erg traag verliep. Er zijn pogingen ondernomen dit te parallelliseren, maar ze waren lukraak en moeilijk volledig te benutten. Dit was de belangrijkste reden dat Parvenuwerd gecreëerd.

Parvenu

Upstart maakt gebruik van opdrachtdefinitiebestanden in /etc/init om te definiëren op welke gebeurtenissen een service moet worden gestart. Tijdens het opstarten van het systeem worden dus verschillende gebeurtenissen verwerkt en kunnen meerdere services tegelijkertijd worden gestart. Hierdoor kunnen ze de bronnen van het systeem volledig benutten, bijvoorbeeld door een schijfgebonden service te starten terwijl een andere CPU-gebonden service wordt uitgevoerd, of terwijl het netwerk wacht op het toewijzen van een dynamisch IP-adres.

U kunt alle upstart-taakbestanden bekijken door ze uit te voeren ls /etc/init/*.conf

Laat me hier gewoon stoppen en zeggen dat als je niet weet wat een service is, of wat het doet, het NIET mag uitschakelen!

Niet alle services zijn geconverteerd naar parvenu. Tijdens het werken aan het serverteam bij Canonical de afgelopen paar maanden, heb ik gewerkt aan een aantal geconverteerde werkbestanden, en het leukste is dat het je in staat stelt om alle script "magie" kwijt te raken en gewoon in een paar commando's hier en daar om precies te definiëren hoe de service te starten, en niets meer. Maar voor nu, slechts een handvol traditionele netwerkdiensten, zoals inktvis en samba, zijn geconverteerd.

Is een service upstart-gebaseerd?

Om te achterhalen of een service paraat is, kunt u de statusopdracht uitvoeren:

status servicename

Als het een is parvenu baan, zal dit laten zien:

$ status statd
statd start/running, process 942

Maar als dit niet het geval is, ziet u iets meer als dit:

$ status apache2
status: Unknown job: apache2

In dit geval, apache2 is niet geconverteerd naar parvenu. Dus om uit te schakelen apache2 je rent gewoon

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

Schakel services (taken) in de paring uit

Upstart functiedefinities hebben geen update-rc.d opdracht. Om de taak uit te schakelen, moet u het taakbestand rechtstreeks bewerken om het uit te schakelen. Er zijn twee manieren om dit te doen.

Als je het nog steeds handmatig wilt kunnen starten, moet je de opmerking plaatsen start on staat. Stel dat je wilt installeren samba, maar laat het niet automatisch starten. Hier is het taakbestand (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

Uitschakelen samba, je kunt gewoon een # voor de "start on local-filesystems"Merk op dat, hoewel het niet start bij het opstarten, je het nu nog moet stoppen met

sudo service smbd stop

Als je echter nooit wilt samba om te beginnen, zou ik voorstellen het pakket daadwerkelijk te verwijderen. Als u het echter wel wilt installeren, maar niet kunt starten, kunt u ook:

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

Schakel een service uit met behulp van start / stop strofe (vanaf 11.04)

Beginnend met de versie van de upstart die in 11.04 zal zijn, is er een nieuw sleutelwoord dat het start on en stop on stanza: manual. Dus een andere manier om de service uit te schakelen vanaf 11.04 is om:

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

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

U kunt een maken override bestand om een ​​service uit te schakelen zonder de taakdefinitie helemaal te bewerken, door gewoon de manual zoekwoord erin.


335
2018-01-06 18:25



Lijkt erop dat 11.04 ook override heeft. Zo echo manual >> /etc/init/<service>.override heeft de voorkeur omdat het de originele .conf-filter intact laat. Hoe dan ook, het is nog steeds een schande dat een dergelijke basis enable / disable 3 jaar nodig had om te ontwikkelen, en er is daarvoor geen GUI. - MestreLion
-update-rc.d is wat echt belangrijk is - Tim
lijkt het oorspronkelijke onderwerp veel meer te beheersen dan het antwoord dat is gemarkeerd als het defintieve antwoord van de oorspronkelijke vraagposter. Bedankt! :) - Henning
In mijn geval het bestand /etc/init/ssh.conf bestaat maar status ssh en status sshd beide zeggen "Onbekende baan". Dit antwoord lijkt zo'n mogelijkheid niet aan te pakken? - Brian Z
status ssh geeft me ook 'Onbekende baan', maar service ssh status werkt voor mij - ptim


sysv-rc-conf

Probeer het te gebruiken sysv-rc-conf

sudo apt-get install sysv-rc-conf

en om te beginnen met het beheren van de services

sudo sysv-rc-conf

Welke dit interactieve venster op deze manier zal oproepen

enter image description here

U kunt verder navigeren door pagina's met Ctrl+n voor de volgende pagina en Ctrl+p voor vorige pagina. U kunt services inschakelen en uitschakelen door te selecteren SPACEop gewenste runlevels.

Banen-Admin

Een andere alternatief zou zijn Banen-Admin door te installeren via

sudo apt-get install jobs-admin

Die ook GUI op deze manier biedt

jobs-admin preview

Voor het tonen van meer banen, moet u de aanvinken Toon beschermde banen uit het menu.

chkconfig

En de derde optie zou zijn chkconfig,

sudo apt-get install chkconfig

Het kan worden gebruikt via CLI chkconfig, met een lijst met aan / uit-taken. Ook kunnen we systeemservices gebruiken met chkconfig –list

Services kunnen worden ingeschakeld met

chkconfig <service> on

Services kunnen worden uitgeschakeld met

chkconfig <service> off

En we kunnen zelfs onze eigen service toevoegen, met behulp van een goed init-script met de juiste koppen.

chkconfig --add <service>

-update-rc.d

En een andere optie kan worden doorverwezen hier update-rc.d , kort uitgelegd hier.

Merk op dat voor Ubuntu Server 12.04, update-rc.d  wordt gebruikt in plaats van chkconfig.


121
2018-06-28 18:00



op ubuntu-server: Package chkconfig is not available, but is referred to by another package. - pwned
@pwned U bent vrij om de bijgewerkte informatie met betrekking tot de servereditie te bewerken en te plaatsen. Dank u. - atenz
Ik deed wat je hebt voorgesteld, nu is het tijd voor peer review. - pwned
jobs-admin staat niet toe om van baan te veranderen (Ubuntu 14.04), in plaats daarvan een crashrapport te maken ;-) - Sadi
sysv-rc-conf is niet geschikt voor gebruik met upstart of systemd, het is duidelijk alleen voor het oude System 5 rc-systeem, dat al bijna een decennium niet de standaard is op Ubuntu Linux. Debian Bug # 791689 erkent dit en ondervraagt ​​waarom het niet is gemarkeerd als conflicterend met systemd. - JdeBP


Voor degenen onder ons die Ubuntu over ssh uitvoeren, vind ik de mooiste optie rcconf - een op tekst gebaseerd programma:

sudo apt-get install rcconf
sudo rcconf

alt text

Navigeer met de tab- en pijltoetsen, druk op de spatiebalk om in / uit te schakelen. Wijzigingen blijven behouden bij het opnieuw opstarten.

Schermafbeelding geleend van deze blogpost, wat ook blijkt sysv-rc-conf - een vergelijkbare tool waarmee u ook het runlevel kunt instellen. (Voor degenen die toevallig genoeg geven om runlevels om ze te willen veranderen :)

Helaas werkt rcconf niet met parvenu's (services vermeld in /etc/init/*), alleen met het traditionele mechanisme (ls -l /etc/init.d/* - degenen die geen symbolische koppelingen zijn).

Gelukkig zijn veel van de services die relevant zijn wanneer ze worden gesynchroniseerd naar een server (Apache, Tomcat, Mvdadm, Boinc-client ...) nog niet aan het opstarten.


48
2018-01-06 18:44



Werkt dit nog steeds met parvenu? - oKtosiTe
Helaas niet. Maar het werkte voor alle gevallen die ik wilde veranderen - de upstart-taken lijken vooral dingen te zijn die ik nooit wil uitschakelen - hardwareklok, log-daemon, netwerk enz. (Tenminste op Ubuntu-server). Maar het is iets om op te letten (ik was niet :), ik heb de post bijgewerkt. - j-g-faustus
Helaas is mysql geconverteerd naar parvenu. En dat is een service die ik alleen gebruik als ik een project doe. - MestreLion
Er is een bug met rcconf op Ubuntu 12.04 die voorkomt dat het programma start. Om het probleem op te lossen, moet u het dialoogvenster installeren. - devius
Aangezien dit antwoord is geschreven, update-rc.d was veranderd, en een deel van de verouderde functionaliteit is verwijderd. Debian-bug # 727735 merkt op dat rcconf niet is gewijzigd om overeen te komen. En nee, rcconf werkt ook niet met systemd, dus niet van toepassing op een van de standaard init-systemen voor Ubuntu Linux in het afgelopen decennium. - JdeBP


Ik ontdekte dat er een GUI-tool is, zoiets als BUM, maar compatibel met Upstart:

  • Banen-Admin

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Maar het is te simpel en het is niet toegestaan ​​om "beschermde banen" te veranderen (wat is dat? Apple heeft Jobs, het besturingssysteem heeft daemons!) - kakaz
Ik sta zelfs niet toe om "onbeschermde taken" (Ubuntu 14.04) te wijzigen, in plaats daarvan een crashrapport te maken ;-) - Sadi


Het bewerken van het bestaande upstart configuratiebestand (zoals hierboven beschreven) is niet zo'n goed idee. Een bijgewerkt pakket zou een bijgewerkte configuratie kunnen bieden en u moest uw wijzigingen steeds opnieuw uitvoeren.

Door een kijkje te nemen man 5 init men zal een meer geschikte oplossing vinden: een override config gebruiken. Kort voorbeeld: Stel dat we een service hebben met de naam "foobar", dus er zou een bestand zijn genaamd /etc/init/foobar.conf met zijn parvenu configuratie. Nu wilt u dat bestand niet verwijderen en ook niet wijzigen - maar u wilt ook niet dat deze service wordt uitgevoerd? Plaats dus een override bestand ernaast: /etc/init/foobar.override, bevattende (optioneel de koptekst met de beschrijving en) in plaats van de start on / stop on lijnen zet je een regel met één woord: manual. Op deze manier vertel je parvenu om in principe het foobar.conf, maar overschrijf de startupdefinitie om alleen die service te starten wanneer deze handmatig wordt afgedwongen (via service foobar start in ons voorbeeld).


12
2018-06-30 20:27





Er is ook de Boot-Up Manager.

Installeren: sudo apt-get install bum

Verdere informatie: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



Vergeet niet om de knop "Geavanceerd" te controleren. - not2qubit