Systemd

From HackerNet
Revision as of 22:07, 2 February 2016 by Helikopter (talk | contribs)
Jump to: navigation, search

Systemd är ett init-system och en service-hanterare för linux och är påväg att bli standard. Det grundläggande syftet med ett init-system är att initiera de komponenter som måste startas efter att Linuxkärnan har startat. Init-systemet används också för att hantera tjänster och demoner för servern medan systemet är igång. Den är redan default hanterare i de flesta stora linux-distar.

Default sedan:
Debian 8
Ubuntu 15.04
Fedora 15
RHEL 7
CentOS 7

Installera

Verfierat på Debian 7(wheezy)

apt-get update
apt-get install systemd systemd-sysv
reboot

Titta på senaste uppstart grafiskt. Testa detta, seriöst det är coolt!

systemd-analyze plot > plot.svg

Systemctl

Systemctl är det centrala verktyget för att kontrollera init-systemet. Systemctl ersätter service och chkconfig.
Grundfunktioner

systemctl start sshd
systemctl stop sshd
systemctl reload sshd
systemctl restart sshd

Status

systemctl status sshd

Autostarta en service

systemctl enable sshd
systemctl disable sshd

Lista alla aktiva enheter

systemctl 

Lista alla enheter

systemctl list-units --all

OBS .service behöver inte skrivas ut, det läggs till efter tjänsten automatiskt
Fler kommandon

systemctl show sshd.service
systemctl list-dependencies sshd.service

Lägga till egna services

Under /etc/systemd/system kan man lägga till egna services som man vill hantera med systemd.

För att säga till systemd att skapa en symlänk och starta din service skriv,

systemctl enable /etc/systemd/system/hello.service
systemctl start hello.service

Journald

Journald är en systemd-komponent som har hand om loggar från applikationer och kärna. Kommandot man använder är journalctl. Kör igenom dessa för att bilda dig en uppfattning av vad de gör och hur de fungerar.

journalctl
journalctl -k
journalctl -u nginx.service
journalctl -u nginx.service --since today
journalctl _PID=8088
journalctl --disk-usage

Networkd

systemctl start systemd-networkd
networkctl
networkctl status

Nspawn

Systemd-nspawn är en container manager som är inbyggd i systemd.
Debian

apt-get install -y dbus debootstrap bridge-utils
debootstrap --arch=amd64 jessie /var/lib/machines/container1/
systemd-nspawn -D /var/lib/machines/container1/ --machine first_container -b

OBS med denna setup delas network namespace med värdhosten. Annars måste man skapa en brygga och koppla containern till den.

systemd-nspawn -D /var/lib/machines/container1/ --machine second_container --network-bridge=my-bridge -b

Kolla containers

machinectl
machinectl status first_container
machinectl login first_container