Managing Services på Linux med systemd

Du har lest alt om systemd, den nye Linux init daemon. Du vet hva den gjør, og hvorfor. Nå er det på tide å grave i og lære å gjøre det sitte opp og tigge – eller i det minste start, stopp, og få informasjon om tjenester

Starte og stoppe Services

Min tidligere stykke, " Here We Go Again, en annen Linux Init. Intro til systemd " drøfter konseptene bak systemd og hva det er ment å gjøre. Nå er det på tide å lære å bruke den til å styre tjenester på våre systemer. systemd er bakoverkompatibel med sysvinit og oppkomling, slik at du kan prøve det ut ved å installere den på alle Linux som bruker sysvinit eller Oppkomling uten en masse ekstra arbeid. Arch Linux, Debian, og Opensuse alle inkluderer systemd i deres programvare repositories.

En iøynefallende utelatelsen fra distroer som støtter systemd er Ubuntu. Det er ulike grunner gitt for dette, og jeg bryr meg ikke fordi jeg er lei av geekfights og bare ønsker å komme videre med ting. En annen måte er å hente deg en kopi av Fedora 15 eller 16, som går systemd som standard.


systemadm er en fin grafisk systemd manager (figur 1). Det er fortsatt en baby, så det kan krasje eller noe, men du kan prøve det ved å installere systemd-gtk pakken på Fedora, den systemd pakken på Arch, eller systemd-gui for Debian. Nei, du kan selvfølgelig distroer ikke bruker konsekvent pakken navngiving, fordi det er mot reglene.

Så pen som systemadm er, la oss utsette til kommandolinjen for resten av denne artikkelen. Se instruksjonene i eksemplene for å se hvilke som krever root privilegier. Du kan se statusen for alt systemd kontroller ved å kjøre systemctl med ingen alternativer:

 $ systemctlUNIT LOAD AKTIV SUB JOB DESCRIPTIONproc-sys-fs-binfmt_misc.automount lastet aktiv venter Vilkårkjør Filformater File System Autsys-enheter- pci0 ... 000: 00: 1b.0 lyd card0.device lastet aktiv plugget 82801I (ICH9 Family) HD Audio Controllersys-enheter-pci0 ...- 0000: 05: 00.0-net-wlan0.device lastet aktiv plugget Centrino Wireless-N tusen 

Hvordan ser du bare tilgjengelige tjenester, løping eller ikke

 $ systemctl list-enheter -t tjeneste --allUNIT BELASTNING AKTIV SUB JOBB DESCRIPTIONceph.service lastet inaktive døde LSB: Start CEPH distribuerte filsystem daemons ved oppstart timechronyd.service lastet aktiv kjører NTP klient /servercman.service feil inaktiv døde cman.service 

Disse vil spytte ut en hel masse produksjon, trolig hundre linjer eller mer. Ønsker du å se bare aktive tjenester?

$ systemctl list-enheter -t tjenesteleverandører

Du kan sjekke status på noen individuell service, for eksempel cman.service, som har en feil flagg i forrige eksempel:

 $ systemctl status cman.servicecman.service Loaded: error (Årsak: Ingen slik fil eller katalog) Aktiv: inaktivt (død) 


Hvor fint, forteller det oss hva problemet er. Her er hva en normal kjøring tjeneste ser ut, med fullstendig informasjon om tjenesten:

 $ systemctl status sshd.servicesshd.service - OpenSSH server daemon Loaded: lastet (/lib/systemd/system/sshd.service; aktivert) Aktiv: aktiv (løping) siden to. 15 desember 2011 12:11:05 -0800; 2t 26min siden Hoved PID: 2091 (sshd) CGroup: name = systemd: /system/sshd.service \\ 2091 /usr /sbin /sshd -D 


På Fedora kan du fortsatt bruke den gamle tjenesten og chkconfig kommandoer. Men hvorfor ikke begynne å lære de nye systemd kommandoer? Dette er hvordan du starter en tjeneste:

# systemctl starte sshd.service

Eller bruk omstart for å starte en løpende tjeneste. Dette stopper en tjeneste:

# systemctl stoppe sshd.service

De som er i kraft bare for den gjeldende økten, så hvis du ønsker en tjeneste å starte ved oppstart gjøre dette:
< p> # systemctl aktiver sshd.service

Og det er alt. Ingen plager med oppstartsskript. Dette deaktiverer at den starter ved oppstart:

# systemctl deaktivere sshd.service

Du kan sjekke for å se om en tjeneste allerede kjører; 0 betyr at det er for tiden i gang og 1 betyr at det ikke:

 $ systemctl er aktivert sshd.service; echo $? enabled0 

Du kan bruke systemctl stoppet opp, poweroff, eller start til nedleggelse eller starte systemet. Alle tre sende en vegg melding til brukere advarsel om at systemet går ned.

Prosesser, cgroups, og Killing

systemd organiserer prosesser med cgroups, og du kan se dette med ps-kommandoen, som har blitt oppdatert for å vise cgroups. Kjør denne kommandoen for å se hvilken tjeneste som eier hvilke prosesser:

 $ ps xawf -eo pid, bruker, cgroup, args PID BRUKER CGROUP COMMAND 1338 root name = systemd: /bruker /Carla /2 \\ _ gdm-session -worker [pam /gdm-passord] 1 358 Carla name = systemd: /bruker /Carla /2 \\ _ /bin /sh /etc /XDG /xfce4 /xinitrc 1487 Carla name = systemd: /bruker /Carla /2 \\ _ /usr /bin /ssh-agent /bin /sh -c exec l /bin /bash -c " startxfce4 " 1515 Carla name = systemd: /bruker /Carla /2 \\ _ xscreensaver -ingen-splash 1 517 Carla name = systemd: /bruker /Carla /2 \\ _ xfce4-session 


cgroups ble innført i Linux Kernel for noen år siden, og de er en interessant mekanisme for tildeling og begrense kjerneressurser. I systemd er cgroups brukt å samle og styre prosesser. Når nye prosesser gytt de blir medlemmer av foreldrenes cgroup. Den cgroup er oppkalt etter den tjenesten den tilhører, og tjenestene kan ikke flykte fra sine cgroups slik at du alltid vet hva tjenesten de tilhører. Når du trenger å drepe en tjeneste du kan drepe cgroup, og snag alle sine prosesser i en razzia i stedet for å spille finne-the-gaffel-eller-omdøpt-prosessen. En annen måte å vise prosessen hierarkiet er med system-cgls kommandoen, som vist i Figur 2.


Det er min gamle venn Avahi daemon. Så i stedet for å jakte ned og drepe de to Avahi behandler den gammeldagse måten, systemd lar meg gjøre det i én kommando:

# systemctl drepe avahi-daemon.service

Lennart Poettering, den hovedforfatter av systemd, har skrevet en rekke artikler for systemadministratorer. De er ikke indeksert, så her er linker for enkelhets skyld. Disse dekker tilpasse oppstartstjenester, køyrenivå, Gettys, og alt du trenger å vite for å kontrollere systemd

Rethinking PID en

systemd for administratorer, del 1

systemd for administratorer, del II

systemd for administratorer, del III

systemd for administratorer, Part IV

systemd for administratorer, del V

systemd for administratorer , Part VI

systemd for administratorer, Part VII

systemd for administratorer, del VIII

systemd for administratorer, del IX

systemd for administratorer, del X

systemd for administratorer, del XI