Administrer oppstart og oppstartsprosesser på Linux med Upstart


Lyst til å starte, stoppe og administrere tjenester på Linux-boksen? Deretter må du gjøre deg kjent med oppkomling og ta kontroll over dine oppstart og oppstartsprosesser på Linux.

Når Linux booter opp, den første prosessen som går kalles init. Derfra tar init oppgaven med å starte opp systemet prosesser. Men som init? Slår ut, er det flere smaker av init, og det avhenger av hvilken Linux-distribusjon du bruker, og hvordan moderne utgivelsen er. La oss ta en titt på noen av bakgrunnshistorien.

BSD, System V, oppkomling og systemd init, Oh My ...

Du tenker kanskje at den måten at systemet starter ville være ganske godt avtalt mellom Linux-distribusjoner. Dessverre, det har ikke vært tilfelle, og kan ikke være tilfelle for noen tid
Relaterte Guider på Linux.com

Bash 101. Arbeid på CLI

Bash 201: guide Middels til Bash

Linux Kernel Module Management 101

Opprette egensignerte SSL-sertifikater for Apache på Linux

Reclaim slettede filer og reparer Filsystemer på Linux < .no>

Linux ikke er direkte avledet av UNIX, men det tar mange ideer fra UNIX, inkludert måten at systemet starter. Noen Linux distroer, særlig Slackware, brukes BSD-stil init. Slackware (og dets derivater) er den eneste hjemmested for denne stilen i disse dager, og det inkluderer en System V init kompatibilitet løsning slik at programmer som forventer å støtte System V init skript kan installere dem på vanlig måte.

System V ( fra UNIX System V), forløperen til var standarden for de fleste Linux-distribusjoner i mange år. Distroer som bruker SysV init ville ha flere kataloger under /etc som rc0.d, rc1.d gjennom rc6.d for hver kjørenivå — selv om mange av køyrenivå er egentlig ikke implementert.

Hva er en runlevel
, spør du? I hovedsak er dette den gruppering av tjenester som drives av init. For eksempel kjørenivå 0 er " stans, " runlevel 1 eller S er " single user mode, " og kjørenivå 6 er omstart. På Fedora /Red Hat-systemer, kjørenivå 3 er et komplett sett av tjenester for å kjøre et flerbrukersystem (nettverk, etc.), og kjørenivå 5 omfatter flerbrukertjenester og Selge X11 med displayet manager. Du vil merke jeg ikke nevne to eller fire, fordi de køyrenivå brukes sjelden og kjørenivå 4 er ikke engang definert som standard.

Legg merke til at du kan bytte mellom køyrenivå ved hjelp av telinit kommando, som så : telinit 3 ville bytte til kjørenivå 3, og telinit 6 ville fortelle systemet på nytt. Vær oppmerksom på at du vanligvis ønsker å bare bruke omstart i stedet for å starte på nytt, men telinit 6 vil også fungere.

Under hver av kataloger, ville du ha et sett av symbolske lenker som peker tilbake til skript som inkluderer oppstart og avslutnings direktiver for tjenester som Apache og SSH daemon. Hver link har et navn som K NN
sshd eller S NN
kopper, der NN
avgjør i hvilken rekkefølge tjenester er drept (K) eller startet (S ). Dette ble vanskelig med bærbare datamaskiner og mobile systemer, fordi staten av en datamaskin kan bestemme rekkefølgen tjenestene skal startes. Se begrunnelsen for oppkomling av Scott James Remnant for mer detaljer — men den korte av det er at det SysV stil init som tjente Linux godt i mange år ble ganske skjør og skrøpelig når Linux er tilpasset til å bruke som en bærbar PC OS så mye som en server OS.

Så nå har vi, eller hadde, oppkomling som den nye standarden. For nå er Oppkomling den sortering av standard for flere distroer. Oppkomling brukes av Ubuntu, aktuelle Fedora utgivelser, og opensuse 11.3 inneholder det som en valgfri pakke. Men Fedora folk jobber med en erstatning for oppkomling kalt systemd, som er en " system og øktbehandler " som er ment å være en " drop-in erstatning for sysvinit ". Det er en meget detaljert gjennomgang av begrunnelsen bak systemd av Lennart Poettering det er en interessant lese hvis du er interessert i de dype detaljer. Så på et tidspunkt, må du vite oppkomling eller systemd, eller begge deler hvis du administrerer systemer som bruker oppkomling og systemd.

For nå skal vi se på oppkomling.

Managing Startup Services

nå, når vi snakker om oppstart tjenester, mener jeg de systemomfattende tjenester som SSH og Apache, ikke programmene startet opp ved skrivebordet. Det er en helt annen kjelen av fisk, og er avhengig av skrivebordet som du bruker. For eksempel, hvis du kjører en ny Linux distro med GNOME, vil du se på System - > Innstillinger - > Oppstartsprogrammer.

For søknader behandlet med oppkomling, vil du først ønsker å se på initctl kommandoen. Dette gjør at du kan arbeide med Oppkomling sin init daemon. Naturligvis, du kommer til å trenge å bruke sudo for å kjøre initctl eller bli logget inn som root.

For å se hva som kjører på systemet ditt, kan du bruke initctl listen. Du vil se omtrent slik ut:


 alsa-mixer-save stoppe /waitingavahi-daemon start /løper, prosess 690mountall-net stop /waitingrc stoppe /waitingrsyslog start /løper, prosess 482screen -cleanup stoppe /waitingtty4 start /løper, prosess 859udev start /løper, prosess 334upstart-udev-broen start /løper, prosess 304ureadahead-andre stopp /venter 


Dette er fra et system som kjører Ubuntu 10.10, du får se en annen liste over jobber på Fedora 14 eller en annen distro. Det første feltet er navnet på jobb – som rsyslog. Det andre feltet er " mål " av jobben, etterfulgt av tilstanden i jobben.

For å stoppe en jobb som kjører, bruker initctl stoppe jobb
. For å starte en jobb, kjører initctl begynne jobb
. Du kan også be om status for jobber med initctl status jobb
. Endelig kan du starte på nytt eller laste jobber med omstart og laste kommandoer. Hva er forskjellen mellom å starte og omlasting? Omstart gjør hva det står på tinn – stopper jobb og deretter starter den. Reload kommandoen sender SIGHUP signal til jobb, som kan brukes til å fortelle en daemon å re-lese konfigurasjonen.

For jobber som administreres av oppkomling, kan du redigere konfigurasjonsfilen under /etc /i det. De vil ha noen få linjer som beskriver hvilke køyrenivå for å starte /stoppe på slik:


 starte på kjørenivå [2345] stopper på kjørenivå 


<[2345!] p> Endre køyrenivå som necesary

Hvis du bruker en stasjonær system, vil du ønsker å installere Boot-up manager &ndash.; et GUI verktøy for håndtering av driftsnivå konfigurasjon. Pakken er boms, og det vil la deg administrere jobber og konfigurere tjenester av driftsnivå. Det er enkelt å bruke, og bør ikke kreve mye veiledning.

Merk at Fedora bruker oppkomling i SysV kompatibilitetsmodus, noe som betyr at mange jobber på Fedora ikke styres med innfødte oppkomling skript. For disse jobbene vil du ønsker å bruke tjenesten kommandoen

For å se status for alle jobber på Fedora bruker tjenesten løp.

tjenesten --status-all

dette vil vise hvilke jobber som stoppet, kjører, og i noen tilfeller mye mer informasjon. For eksempel vil iptables spytte ut hele sitt sett med retningslinjer som kjører i øyeblikket.

For å administrere en jobb med service bruk tjenesten tjeneste
kommando
. tjeneste
er navnet på skriptet henhold /etc/init.d. For eksempel, for å starte og stoppe OpenSSH daemon, vil du bruke tjenesten sshd starte eller tjeneste sshd stopp.

Hvis du vil justere tjenester av driftsnivået, bruker chkconfig kommandoen. Du ville bruke noe sånt chkconfig --level 35 kopper på å fortelle chkconfig å sørge for at kopper er startet i køyrenivå 3 og 5.

Hva om du ønsker å legge til en tjeneste eller endre skript for eksisterende tjenester ? En rask og skitne måte er å bruke /etc/rc.local. Manuset skal kjøres under noen oppstart eller endring av driftsnivå. En annen måte er å endre skript henhold /etc/init.d (for SysV kompatibilitet) eller /etc /init (innfødte oppkomling skript) eller skriv din egen for en ny tjeneste.

Dette er vanligvis unødvendig – nesten hvilken som helst tjeneste som du skal bruke bør ha init skript forhåndsskrevet. Skrive en init skript, enten for oppkomling eller for SysV, er litt utenfor omfanget av denne opplæringen.

Siden mange brukere kommer til å bli overgangen til systemd, vil vi ta en lengre titt på styre jobber med systemd når Fedora 15 kommer ut.

Mesteparten av tiden, bør din interaksjon med administrerende tjenester være minimal med mindre du jobber med Linux som en full-time admin. Hvis du gjør systemadministrasjon, eller planlegger å, bør du allerede være kjent med init systemet at distroer bruker. Hvis ikke, er nå en god tid å lære. Hvis du er en desktop Linux-bruker, har du sannsynligvis ikke vil bli administrerende tjenester svært ofte, men det er et godt å vite det grunnleggende at vi har dekket her i tilfelle du trenger å gjøre noe feilsøking eller bare ønsker å finjustere system.