Systemd - kompendium

in linux •  7 years ago  (edited)

systemd jest menadżerem systemu i usług dla Linuksa który zastąpił w większości dystrybucji (Arch Linux, CentOS, RedHat, Fedora, Debian, Ubuntu, SUSE) stary SysVinit. Odpowiedzialny jest m.in. za start poszczególnych usług systemowych podczas uruchamiania systemu. 

Funkcje systemd

  • Możliwość równoległego uruchamiania usług
  • Uruchamianie serwisów za pomocą aktywacji gniazda
  • Uruchamianie usług na żądanie
  • Śledzenie działania procesów przy pomocy grup kontrolnych cgroups
  • Wsparcie dla zachowywania i przywracania stanu usług w systemie
  • Utrzymanie punktów montowania i automatycznego montowania w systemie
  • Transakcyjna implementacja logiki kontroli usług, oparta na zależnościach
  • Kompatybilność z SysVinit

Pliki konfiguracyjne:

Cała konfiguracja systemd zapisana jest w plikach zwanych "unitami". Mamy 12 typów plików konfiguracyjnych:
.service, .socket, .device, .mount, .automount, .swap, .target, .path, .timer, .snapshot, .slice, .scope
Dokładny opis znajduje się tutaj: https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Unity znajdują się w następujących katalogach:
/etc/systemd/system - pliki z tej lokalizacji są przetwarzane w pierwszej kolejności.
/lib/systemd/system - oryginalne pliki konfiguracyjne które przeważnie są linkowane do /etc/systemd/system

Komendy


Cele uruchomienia
systemctl list-units --type=target - lista wszystkich możliwych trybów (celów) uruchamiania Linuxa 
systemctl get-default - pokazuje w jakim trybie (celu) domyślnie uruchamia się Linux
systemctl set-default nazwa_celu - zmiana domyślnego trybu uruchamiania Linuxa 
systemctl isolate nazwa_celu - przełączenie trybu/celu w danym momencie
systemd-analyze blame - lista aktualnie uruchomionych usług.

Podstawowe komendy na przykładzie serwera www nginx
systemctl list-units - lista wszystkich aktywnych usług/jednostek które systemd przetwarza. 
systemctl list-unit-files – lista wszystkich usług/jednostek wraz ze statusem
systemctl --state=failed - lista usług, których nie udało się uruchomić podczas startu systemu
systemctl start nginx – uruchamianie usługi
systemctl stop nginx – zatrzymywanie usługi
systemctl restart nginx – restart usługi
systemctl reload nginx – przeładowanie konfiguracji danej usługi

systemctl enabled nginx - włączanie usługi
systemctl disable nginx - wyłączanie usługi 
systemctl is-enabled nginx - sprawdzanie czy usługa jest włączona 
systemctl is-active nginx - sprawdzanie czy usługa jest aktywna/uruchomiona w danym momencie
systemctl status nginx - sprawdzanie statusu usługi
systemctl cat nginx - sprawdzanie definicji/konfiguracji usługi 

Analiza
journalctl -b - zdarzenia od czasu ostatniego uruchomienia systemu
journalctl -f - Tak jak komenda tail -f - 10 ostatnich zdarzeń 

Ręczne dodawanie usługi

Jeśli chcemy stworzyć i uruchomić przy starcie systemu daną usługę, tworzymy plik jednostki np: /etc/systemd/system/test.service o przykładowej zawartości:

[Unit]
Description=Moj program
After=network.target
After=syslog.target

[Install] WantedBy=multi-user.target
[Service] User=root Group=root ExecStart=/test/test.sh

Następnie włączamy usługę: systemctl enable test 

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

@kamilkobak, I gave you an upvote on your first post! Please give me a follow and I will give you a follow in return!

Please also take a moment to read this post regarding bad behavior on Steemit.

Congratulations @kamilkobak! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post
You got a First Vote

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Congratulations @kamilkobak! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemitBoard - Witness Update
Vote for @Steemitboard as a witness to get one more award and increased upvotes!