Jakie są zalety / wady Upstart i systemd?


183

Wygląda na to, że systemd to nowy, gorący system inicjujący w bloku, podobnie jak Upstart kilka lat temu. Jakie są zalety / wady dla każdego z nich? Ponadto, jak każdy z nich porównuje się do innych systemów inicjujących?


4
@keith iirc openrc po prostu korzysta z SysV, zaletą jest dobrze zaprojektowana kolekcja skryptów startowych, które używają wspólnych komponentów i są przenośne (co oznacza pracę na dowolnej powłoce). To dobre czyszczenie, ale tak naprawdę nie nowa inicjatywa
xenoterracide

@xeno Tak, ale tak naprawdę nie można powiedzieć. w ogóle nie ma dowiązań symbolicznych rcX.d lub [KS]. W rzeczywistości sysv init sam jest dość elastyczny, a poziomy uruchamiania nie są tak naprawdę używane w zwykły sposób.
Keith

Chociaż autor tego bloga jest przeciwny systemd, sugeruję przeczytanie tego. Omówiono wady i zalety systemd i BSD init. textplain.net/blog/2015/…
Peschke,

1
Proszę również przejść przez aktualizację 2016 unix.stackexchange.com/a/287282/49091 .
igaurav

Wszelkie domniemane zalety systemd w ciągu 100 lat nie zrekompensują kosztów już poniesionych na świecie w celu wdrożenia tego. Każda minuta, godzina lub dzień spędzony przez administratora systemu Unix na radzeniu sobie z tymi śmieciami musi już sumować się do miliardów i dla jakich realnych korzyści oprócz kilku dzwonków i gwizdków?
Waslap

Odpowiedzi:


90

Aktualizacja 2016

Większość odpowiedzi tutaj ma pięć lat, więc czas na kilka aktualizacji.

Ubuntu używało domyślnie upstartu, ale porzuciło go w zeszłym roku na rzecz systemd - patrz:

Z tego powodu istnieje ciekawy artykuł Systemd dla użytkowników Upstart na wiki Ubuntu - bardzo szczegółowe porównanie między upstart i systemd oraz przewodnik przejścia od upstart do systemd.

(Należy pamiętać, że zgodnie z wiki Ubuntu nadal można domyślnie uruchomić aktualizację na bieżących wersjach Ubuntu, instalując upstart-sysvi działając, sudo update-initramfs -uale biorąc pod uwagę zakres projektu systemowego, nie wiem, jak to działa w praktyce, ani czy systemd jest możliwe do odinstalowania).

Większość informacji w poniższych sekcjach Polecenia i skrypty została zaadaptowana z niektórych przykładów użytych w tym artykule (które są wygodnie licencjonowane, podobnie jak wkłady użytkowników Stack Exchange w ramach licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 3.0 ).

Oto szybkie porównanie popularnych poleceń i prostych skryptów, szczegółowe wyjaśnienia znajdują się w poniższych sekcjach. Ta odpowiedź porównuje stare zachowanie systemów opartych na Upstart z nowym zachowaniem systemów opartych na systemie, zgodnie z pytaniem, ale należy pamiętać, że polecenia oznaczone jako „Upstart” niekoniecznie są specyficzne dla Upstart - często są to polecenia, które są wspólne dla każdego niesystemowego systemu Linux i Unix.

Polecenia

Uruchamianie su:

  • dorobkiewicz: su
  • systemd: machinectl shell

(patrz sekcja „zamiana komendy su” poniżej)

Ekran biegowy:

  • dorobkiewicz: screen
  • systemd: systemd-run --user --scope screen

(patrz sekcja „Nieoczekiwane zabijanie procesów w tle” poniżej)

Uruchamianie tmux:

  • dorobkiewicz: tmux
  • systemd: systemd-run --user --scope tmux

(patrz sekcja „Nieoczekiwane zabijanie procesów w tle” poniżej)

Rozpoczęcie pracy foo:

  • dorobkiewicz: start foo
  • systemd: systemctl start foo

Zatrzymywanie pracy foo:

  • dorobkiewicz: stop foo
  • systemd: systemctl stop foo

Ponowne uruchamianie zadania foo:

  • dorobkiewicz: restart foo
  • systemd: systemctl restart foo

Oferty pracy:

  • dorobkiewicz: initctl list
  • systemd: systemctl status

Sprawdzanie konfiguracji zadania foo:

  • dorobkiewicz: init-checkconf /etc/init/foo.conf
  • systemd: systemd-analyze verify /lib/systemd/system/foo.service

Wyświetlanie zmiennych środowiskowych zadania:

  • dorobkiewicz: initctl list-env
  • systemd: systemctl show-environment

Ustawianie zmiennej środowiskowej zadania:

  • dorobkiewicz: initctl set-env foo=bar
  • systemd: systemctl set-environment foo=bar

Usuwanie zmiennej środowiskowej zadania:

  • dorobkiewicz: initctl unset-env foo
  • systemd: systemctl unset-environment foo

Kłody

W fazie upstart dzienniki są normalnymi plikami tekstowymi w katalogu / var / log / upstart, więc możesz je przetwarzać jak zwykle:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

W logach systemowych przechowywane są w wewnętrznym formacie binarnym (nie jako pliki tekstowe), więc musisz użyć journalctlpolecenia, aby uzyskać do nich dostęp:

sudo journalctl -u foo
sudo journalctl -u foo -f

Skrypty

Przykładowy skrypt wstępny napisany w /etc/init/foo.conf:

description "Job that runs the foo daemon"
start on runlevel [2345]
stop on runlevel [016]
env statedir=/var/cache/foo
pre-start exec mkdir -p $statedir
exec /usr/bin/foo-daemon --arg1 "hello world" --statedir $statedir

Przykładowy skrypt systemowy napisany w /lib/systemd/system/foo.service:

[Unit]
Description=Job that runs the foo daemon
Documentation=man:foo(1)
[Service]
Type=forking
Environment=statedir=/var/cache/foo
ExecStartPre=/usr/bin/mkdir -p ${statedir}
ExecStart=/usr/bin/foo-daemon --arg1 "hello world" --statedir ${statedir}
[Install]
WantedBy=multi-user.target

zamiana polecenia su

suWymiana polecenie zostało połączone w Systemd w rozkładaną żądanie # 1022:

ponieważ według Lennarta Poetteringa „su to naprawdę zepsuta koncepcja” .

Wyjaśnia, że „możesz używać su i sudo jak poprzednio, ale nie oczekuj, że zadziała w pełni .

Oficjalny sposób na suzachowanie podobne do tego jest teraz:

machinectl shell

Zostało to dalej wyjaśnione przez Lennarta Poetteringa w dyskusji do wydania # 825:

„No cóż, wiele się na ten temat dyskutuje, ale problem polega na tym, że to, co powinien zrobić su, jest bardzo niejasne. [...] Krótko mówiąc: su jest naprawdę zepsutą koncepcją. Daje ci to rodzaj skorupy i można z niego korzystać, ale nie jest to pełny login i nie należy go mylić z jednym z nich ”. - Lennart Poettering

Zobacz też:

Nieoczekiwane zabicie procesów w tle

Polecenia takie jak:

nie działa już zgodnie z oczekiwaniami . Na przykład nohupjest poleceniem POSIX, aby upewnić się, że proces będzie kontynuowany po wylogowaniu z sesji. To już nie działa na systemd. Również programy takie jak screeni tmuxmuszą być wywoływane w specjalny sposób, w przeciwnym razie procesy, które uruchamiasz za ich pomocą, zostaną zabite (chociaż nie zabicie tych procesów jest zwykle głównym powodem uruchomienia screena lub tmuxa).

To nie pomyłka, to celowa decyzja, więc prawdopodobnie nie zostanie naprawiona w przyszłości. Oto, co Lennart Poettering powiedział na ten temat:

Moim zdaniem, w rzeczywistości UNIX był dość dziwny, że domyślnie pozwalał na swobodny dostęp dowolnego kodu użytkownika po wylogowaniu. Od wielu lat dyskutuje się wśród wielu osób z OS, że powinno to być możliwe, ale z pewnością nie powinno być domyślnym, ale nikt nie śmiał do tej pory przesunąć przełącznika, aby zmienić go z domyślnego na opcję. Brak czyszczenia sesji użytkownika po wylogowaniu jest nie tylko brzydki i nieco hackerski, ale także stanowi problem bezpieczeństwa. systemd 230 teraz w końcu przestawił przełącznik i wreszcie domyślnie czyści wszystko poprawnie po wylogowaniu użytkownika.

Aby uzyskać więcej informacji zobacz:

Koncepcja uruchamiania na wysokim poziomie

W sposób systemd działa wstecz - w zadaniach upstart zaczynają się tak szybko, jak to możliwe, a w zadaniach systemd rozpoczynają się, kiedy muszą. Na koniec dnia te same zadania mogą być uruchomione przez oba systemy i w prawie tej samej kolejności, ale myślicie o tym, patrząc z przeciwnej strony, że tak powiem.

Oto, w jaki sposób wyjaśnia to Systemd for Upstart Users :

Model Upstart dla uruchamiania procesów (zadań) jest oparty na „zachłannym zdarzeniu”, tzn. Wszystkie dostępne zadania, których zdarzenia startowe są uruchamiane, są uruchamiane jak najwcześniej. Podczas rozruchu upstart syntetyzuje niektóre zdarzenia początkowe, takie jak start lub rcS jako „root drzewa”, wczesne usługi zaczynają się na nich, a później usługi uruchamiają się, gdy te pierwsze są uruchomione. Nowe zadanie musi jedynie zainstalować plik konfiguracyjny w / etc / init /, aby stać się aktywnym.

model systemd dla uruchamiania procesów (jednostek) jest „oparty na leniwej zależności”, tzn. jednostka uruchomi się tylko wtedy, gdy i od niej zależy jakaś inna jednostka początkowa. Podczas rozruchu systemd uruchamia „jednostkę główną” (default.target, można zastąpić w grub), która następnie w sposób tranzytowy rozwija się i uruchamia swoje zależności. Nowa jednostka musi dodać się jako zależność jednostki sekwencji rozruchowej (zwykle multi-user.target), aby stać się aktywną.

Wykorzystanie w dystrybucjach

Teraz niektóre najnowsze dane według Wikipedii:

Dystrybucje domyślnie korzystające z upstart:

Dystrybucje domyślnie używające systemd:

(Zobacz Wikipedia , aby uzyskać aktualne informacje)

Dystrybucje nie korzystające ani z Upstart, ani z systemd:

Spór

W przeszłości Proponowano rozwidlenie Debiana, aby uniknąć systemd . Devuan GNU + Linux został stworzony - widelec Debiana bez Systemd (dzięki fpmurphy1 za wskazanie go w komentarzach).

Aby uzyskać więcej informacji na temat tej kontrowersji, zobacz:

Jak wielu z was może już wiedzieć, głosowanie Init GR Debian promowane przez Iana Jacksona nie było przydatne do ochrony dziedzictwa Debiana i jego użytkowników przed lawiną systemową.

Sytuacja ta przewiduje blokadę systemowych zależności, która de facto zagraża wolności rozwoju i ma poważne konsekwencje dla Debiana, jego wyższego i niższego szczebla.

CTTE udało się zamienić zależność i zyskać czas na subtelną instalację systemd nad sysvinit, ale nawet ten proces był wyczerpujący i pełen dramatyzmu. Ostatecznie tydzień temu Ian Jackson zrezygnował. [...]

Rezygnuję ze stanowiska komitetu technicznego ze skutkiem natychmiastowym.

Chociaż ważne jest, aby poglądy 30–40% projektu, które się ze mną zgadzają, były nadal reprezentowane w TC, ja osobiście jestem zdecydowanie zbyt kontrowersyjny w tym miejscu, aby to zrobić. Powinienem odsunąć się na bok, aby ograniczyć zakres personalizacji rozmów na temat zarządzania projektem. [...]

Devuan narodził się z kontrowersji związanych z decyzją o użyciu domyślnego systemu init dla Debiana. Oficjalne stanowisko Debian na Systemd jest pełen twierdzi, że inni zdemaskowana . Zainteresowani czytelnicy mogą kontynuować dyskusję na ten gorący temat w kontrowersji Systemd . Zachęcamy jednak do zachowania chłodu i uprzejmości w głosie. W Devuan jesteśmy bardziej zainteresowani błędnym programowaniem niż oglądaniem się za siebie. [...]

Powstały niektóre strony i artykuły poświęcone systematycznej kontrowersji:

W Hacker News jest wiele interesujących dyskusji:

Podobne tendencje można zaobserwować również w innych dystrybucjach:

Filozofia

upstart podąża za uniksową filozofią DOTADIW - „Zrób jedną rzecz i zrób to dobrze”. Jest to zamiennik tradycyjnego demona init. Nie robi nic poza uruchamianiem i zatrzymywaniem usług. Inne zadania są przekazywane innym specjalistycznym podsystemom.

systemd robi znacznie więcej. Oprócz uruchamiania i zatrzymywania usług zarządza także hasłami, loginami, terminalami, zarządzaniem energią, resetami fabrycznymi, przetwarzaniem logów, punktami montowania systemu plików, obsługą sieci i wiele więcej - niektóre z funkcji można znaleźć w pliku NEWS .

Plany ekspansji

Zgodnie z prezentacją „Perspektywy dla systemd Co zostało osiągnięte” i „Co nas czeka” Lennarta Poetteringa w 2014 roku na GNOME.asia, oto główne cele systemd, obszary, które zostały już uwzględnione i te, które wciąż były w toku:

cele systemowe:

Nasze cele

  • Przekształcanie Linuksa z worka bitów w konkurencyjny system operacyjny ogólnego zastosowania.
  • Budowanie internetowego systemu operacyjnego nowej generacji Ujednolicanie bezcelowych różnic między dystrybucjami
  • Przywracanie innowacji do podstawowego systemu operacyjnego

  • Desktop, Server, Container, Embedded, Mobile, Cloud, Cluster,. . . Te obszary są bliżej siebie niż mogłoby się wydawać

  • Zmniejszenie złożoności administratora, niezawodność bez nadzoru
  • Wszystko introspekcyjne
  • Kluczem jest automatyczne wykrywanie, plug and play
  • Naprawiamy rzeczy tam, gdzie są zepsute, nigdy nie nakładaj na nie taśmy

Obszary już objęte:

Co już obejmuje:

system init, rejestrowanie dziennika, zarządzanie logowaniem, zarządzanie urządzeniem, zarządzanie plikami tymczasowymi i lotnymi, rejestracja formatu binarnego, zapisywanie / przywracanie podświetlenia, zapisywanie / przywracanie rfkill, bootchart, readahead, konfiguracja pamięci szyfrowanej, wykrywanie partycji EFI / GPT, maszyna wirtualna / kontener rejestracja, zarządzanie minimalnymi kontenerami, zarządzanie nazwami hostów, zarządzanie ustawieniami lokalnymi, zarządzanie czasem, zarządzanie losowymi nasionami, zarządzanie zmiennymi sysctl, zarządzanie konsolą,. . .

Praca w toku:

Nad czym pracujemy:

  • zarządzanie siecią
  • systemd-networkd
  • Lokalna pamięć podręczna DNS, odpowiadający mDNS, odpowiadający LLMNR, weryfikacja DNSSEC
  • IPC w jądrze
  • kdbus, sd-bus
  • Synchronizacja czasu z NTP
  • systemd-timesyncd
  • Większa integracja z kontenerami
  • Piaskownica usług
  • Piaskownica aplikacji
  • Format obrazu systemu operacyjnego
  • Format obrazu kontenera
  • Format obrazu aplikacji
  • GPT z automatycznym wykrywaniem
  • Systemy bezstanowe, systemy z możliwością aktualizacji, przywracanie ustawień fabrycznych
  • / usr to system operacyjny
  • / etc jest konfiguracją (opcjonalną)
  • / var jest stanem (opcjonalnym)
  • Inicjalizacja i aktualizacje węzłów atomowych
  • Integracja z chmurą
  • Zarządzanie usługami między węzłami
  • Weryfikowalne obrazy systemu operacyjnego
  • Aż do oprogramowania wewnętrznego
  • Ładowanie rozruchu

Zakres tej odpowiedzi

Jak zauważył fpmurphy1 w komentarzach: „Należy zauważyć, że systemd rozszerzył zakres swojej pracy na przestrzeni lat daleko poza zwykłe uruchamianie systemu”.

Próbowałem zawrzeć tutaj większość istotnych informacji. W tym miejscu porównuję typowe funkcje Upstart i systemd, gdy są używane jako systemy init, jak podano w pytaniu, i wspominam tylko o cechach systemd, które wykraczają poza zakres systemu init, ponieważ nie można ich porównać do uruchamiania, ale ich obecność jest ważna zrozumieć różnicę między tymi dwoma projektami. Odpowiednią dokumentację należy sprawdzić, aby uzyskać więcej informacji.

Więcej informacji

Więcej informacji można znaleźć na stronie:

Dodatki

Zespół LinOxide stworzył zestaw plików Systemd vs. SysV Init Linux .


4
... i takie rozwidlenie Debiana miało miejsce. Devuan GNU + Linux to rozwidlenie Debiana bez systemd.
fpmurphy

2
Należy zauważyć, że systemd rozszerzył zakres swojej pracy na przestrzeni lat daleko poza zwykłe uruchamianie systemu.
fpmurphy

1
Znakomity post i niezwykle pomocny facet Cent. Dziękujemy za poświęcenie czasu panu !!!
origin1tech

4
@ronsmith service <foo> start/stop/restart/statusnadal działa dobrze. Podobnie jak większość oprogramowania uniksowego, systemd zapewnia zgodność poleceń z dobrze znanymi ustawieniami domyślnymi.
Shadur

2
Bardzo dobra odpowiedź. Jeden punkt: systemy operacyjne BSD nie są dystrybucjami Linuksa: są to różne systemy operacyjne Unix z własnym jądrem.
Giorgio

68

Zarówno upstart, jak i systemd są próbami rozwiązania niektórych problemów z ograniczeniami tradycyjnego systemu inicjującego SysV. Na przykład niektóre usługi muszą zostać uruchomione po innych usługach (na przykład nie można montować systemów plików NFS, dopóki sieć nie uruchomi się), ale jedynym sposobem obsługi SysV jest skonfigurowanie łączy w katalogu rc # .d tak, że jedno jest przed drugim. Dodaj do tego, może być konieczne ponumerowanie wszystkiego później, gdy zależności zostaną dodane lub zmienione. Upstart i Systemd mają bardziej inteligentne ustawienia do definiowania wymagań. Problemem jest również to, że wszystko jest pewnego rodzaju skryptem powłoki i nie wszyscy piszą najlepsze skrypty inicjujące. Wpływa to również na szybkość uruchamiania.

Niektóre zalety systemd widzę:

  • Każdy rozpoczęty proces otrzymuje własną grupę lub określoną grupę.
  • Wstępne tworzenie gniazd i uchwytów plików dla usług, podobnie jak robi to xinetd dla swoich usług, umożliwiając szybsze uruchamianie usług zależnych. Na przykład systemd będzie trzymał otwarty uchwyt pliku dla / dev / log dla syslog, a kolejne usługi wysyłające do / dev / log będą buforowane, dopóki syslogd nie będzie gotowy do przejęcia.
  • Uruchomiono mniej procesów, aby faktycznie uruchomić usługę. Oznacza to, że nie piszesz skryptu powłoki, aby uruchomić usługę. Może to być poprawa prędkości, a (IMO) coś łatwiejszego do ustawienia.

Jedną z wad, o których wiem, jest to, że aby skorzystać z prealokacji gniazda systemd / FH, wiele demonów będzie musiało zostać załatanych, aby FH przekazał im systemd.


13
PulseAudio to bardzo złośliwy system dźwiękowy ( pulseaudio.org ), napisany pierwotnie przez Lennarta Poetteringa, autora systemd. Przeważnie żartowałem tutaj, ponieważ znam kilka osób, które lubią narzekać na pulseaudio i jestem pewien, że narzekaliby również na systemd. Szczerze mówiąc, nie miałem problemu z systemem ani pulseaudio.
jsbillings 20.01.11

4
Sprawia, że ​​jedna jest prawie sosna dla obfitych fiordów Plan9 ... wszystko jest teczką.
dhchdhd

4
Szczerze mówiąc, pulseaudio było rozwiązaniem nieistniejącego problemu. Nie ma nic, co PA może zrobić, czego nie może ALSA, i słyszałem mnóstwo osób mających problemy z PA, w kółko.
WhyNotHugo

3
Dwie brakujące wady systemowe: (1) wszystkie skrypty startowe muszą zostać przepisane. (2) jest znacznie mniej kompatybilny z systemami innymi niż Linux (na przykład BSD).
WhyNotHugo

8
Po prostu świetnie. Proszę spojrzeć na 0pointer.de/blog/projects/the-biggest-myths . Byłem świadkiem rozwoju systemu i mogę poświadczyć, że wiele krytyk podanych tutaj jest całkowicie bezpodstawnych. Na linku znajdziesz cios za ciosem, uzasadnione obalenie.
vonbrand

30

Piła systemdwspomniana dziś w Arch General ML . Więc czytaj dalej. H Online jak zawsze jest doskonałym źródłem technologii Linux i właśnie tam znalazłem swoje miejsce, aby rozpocząć badania Systemd jako alternatywy SysV Init i Upstart . Jednak artykuł H Online (w tym przypadku) nie jest zbyt przydatną lekturą, a prawdziwym zastosowaniem jest to, że zawiera linki do przydatnych lektur.

Prawdziwa odpowiedź znajduje się w ogłoszeniu systemd . Co daje pewne kluczowe punkty na temat tego, co jest nie tak z zainicjowanym SysV i jakie nowe systemy muszą zrobić

  • Zacząć mniej.
  • I zacząć więcej równolegle.

Wydaje się, że jego głównym planem jest uruchamianie usług tylko wtedy, gdy są potrzebne, i uruchamianie gniazda dla tej usługi, aby usługa, która tego potrzebuje, mogła połączyć się z utworzonym gniazdem na długo przed pełnym połączeniem demona z siecią. Najwyraźniej gniazdo zachowa niewielką ilość buforowanych danych, co oznacza, że ​​żadne dane nie zostaną utracone podczas opóźnienia, zostaną one obsłużone, gdy tylko demon będzie w trybie online.

Kolejną częścią planu wydaje się nie serializować systemów plików, ale zamiast tego montować je również na żądanie, w ten sposób nie czekasz na /home/itp. (Nie mylić /etc) na montowanie i / lub fsckkiedy możesz być uruchamiane demony jako /i /var/itp. są już zamontowane. Powiedział, że w tym celu użyje autofs.

Ma również na celu tworzenie .desktopstylowych deskryptorów inicjujących jako zamiennik skryptów. Pozwoli to uniknąć ton powolnych shprocesów, a nawet więcej widły procesów od rzeczy, jak sedi grepktóre są często wykorzystywane w skryptach powłoki.

Planują również nie uruchamiać niektórych usług, dopóki nie zostaną o to poproszone, a może nawet je wyłączyć, jeśli nie będą już potrzebne, moduł bluetooth i demon są potrzebne tylko wtedy, gdy używasz urządzenia Bluetooth. Innym podanym przykładem jest demon ssh. Do tego jest zdolny inetd. Osobiście nie jestem pewien, czy mi się to podoba, ponieważ może to oznaczać opóźnienie, gdy ich potrzebuję, aw przypadku ssh myślę, że oznacza to możliwą lukę w zabezpieczeniach, gdyby mój inetd został zagrożony, cały system byłby zagrożony. Zostałem jednak poinformowany, że użycie tego do złamania tego systemu jest niewykonalne i że jeśli chcę, mogę wyłączyć tę funkcję dla każdej usługi i na inne sposoby.

Kolejną funkcją będzie prawdopodobnie możliwość uruchomienia na podstawie zdarzeń czasowych, w regularnych odstępach czasu lub o określonej godzinie. Jest to podobne do tego, co crondi atdteraz. Chociaż powiedziano mi, że nie będzie obsługiwał użytkownika „cron”. Osobiście brzmi to jak najbardziej bezcelowa rzecz. Myślę, że to zostało napisane / wymyślone przez ludzi, którzy nie pracują w środowiskach dla wielu użytkowników, nie ma większego celu dla użytkownika crona, jeśli jesteś jedynym użytkownikiem w systemie, oprócz tego, że nie działa jako root. Codziennie pracuję na systemach wieloużytkownikowych, a regułą jest zawsze uruchamianie skryptów użytkownika jako użytkownik. Ale może nie mam na tyle przewidujący, co robią, a to w żaden sposób nie zrobić go tak, że nie można uruchomić crondalbo atd, więc nie zaszkodzi nikomu ale programiści sądzę.

Dużą wadą systemd jest to, że niektóre demony będą musiały zostać zmodyfikowane, aby w pełni je wykorzystać. Będą działać teraz, ale działałyby lepiej, gdyby zostały napisane specjalnie dla jego modelu gniazda.

Wydaje się, że w większości problemem systemstów z upstartem jest system zdarzeń i wierzą, że nie ma to sensu lub jest niepotrzebne. Być może ich słowa najlepiej to wyrażają.

Mówiąc prościej: fakt, że użytkownik właśnie uruchomił D-Bus, w żaden sposób nie wskazuje na to, że NetworkManager powinien zostać uruchomiony (ale tak postąpiłby Upstart). Jest odwrotnie: kiedy użytkownik pyta o NetworkManager, jest to zdecydowanie wskazanie, że D-Bus również powinien zostać uruchomiony (czego z pewnością oczekiwałby większość użytkowników, prawda?).
Dobry system inicjujący powinien uruchamiać tylko to, co jest potrzebne, i to na żądanie. Albo leniwie, albo równolegle iz wyprzedzeniem. Jednak nie powinno się uruchamiać więcej niż to konieczne, szczególnie nie wszystko zainstalowane, które mogłoby korzystać z tej usługi.

Jak już powiedziałem, jest to omawiane znacznie bardziej kompleksowo w ogłoszeniu systemd .


przepraszam, ale ogłoszenie jest jak książka. Muszę czytać i czytać, zanim naprawdę będę mógł dodać tutaj więcej.
ksenoterrakid

2
Jak to jest lepsze niż odpowiedź @ Johna? Czy to jest symbol zastępczy? Promocja H Online ?
tshepang 20.01.11

1
@ thepang dobrze to faktycznie prowadzi do ogłoszenia systemu d, a h online rzeczy zawiera linki do tego i innych interesujących linków. to długa żmudna lektura. Mógłbym dodać więcej, kiedy już to omalię ... to nie jest prosty temat. kiedy to napisałem, pomyślałem, że możesz zacząć czytać wcześniej niż później. ale możesz mnie zmodyfikować. z pewnością odpowiedź na @jsbillings jest przyzwoita i jak dotąd lepsza niż moja. ale nie tak dobre, jak czytanie samego ogłoszenia
ksenoterracid

@tshepang Prawdopodobnie dodam więcej jutro, po łóżku. h online to tylko ja, który byłem dobrym dziennikarzem i cytowałem swoje źródła.
Xenoterracide

@tshepang. Zaktualizowałem swoją odpowiedź. całkiem pewne, że skończę, chyba że pomocni ludzie na irc: //frenode.net/systemd zdecydują, że chcą zaoferować jakąś korektę.
ksenoterrakid

11

Cóż, jedna z rzeczy, o których większość z was zapomniała, to organizacja procesów w grupach .

Więc jeśli systemd coś uruchomił, umieści to w swojej własnej grupie cg i nie ma (nieuprzywilejowanego) sposobu na ucieczkę od tej grupy. Oto konsekwencje tego:

  • Administrator dużego systemu z wieloma użytkownikami ma nowe skuteczne sposoby identyfikowania szkodliwych użytkowników / procesów.
  • Priorytety planowania CPU można lepiej określić, tak jak to zrobiono w „Wonder autocgroup patch” .

8

Aby uzyskać bardzo szczegółowe spojrzenie na systemd, zaczynając od pierwszych szkiców projektowych (i szczegółową krytykę istniejących systemów init, w tym na początku i jak systemd proponuje je naprawić), przejdź do jego strony głównej . Z czasem w LWN opublikowano kilka artykułów na temat uruchamiania . Pamiętaj tylko, że każda wzmianka o systemd (lub pulseaudio) powoduje niekończące się flamewars.

IMVHO (i jako użytkownik Fedory) jestem z tego bardzo zadowolony. Coś w tej linii było dawno spóźnione, aby poradzić sobie ze złożonością obecnych systemów Linux. Fedora przez jakiś czas korzystała z upstartu, ale nigdy nie wyszła ze sceny bycia wymyślnym zamiennikiem sysvinit, uruchamiającym głównie niezmienione skrypty inicjujące. Obietnica uproszczenia konfiguracji rozruchu kosztuje ponownieręczne konfigurowanie współzależności, a to po prostu nie działa. usystematyzowane dane zależą od siebie (lub po prostu pozwalają na uruchamianie rzeczy bez względu na zależności, same się rozwiązują). Inną dużą zaletą (niektórzy twierdzą, że jest to poważna wada) jest to, że wykorzystuje funkcje specyficzne dla Linuksa do samego końca (szczególnie grupy c pozwalają na izolowanie demona i wszystkich jego potomków, więc łatwo jest monitorować, ograniczać zasoby lub zabijać je, ponieważ grupa; jest wiele innych).


3

Kronikowanie - Systemd jest dosłownie podobny do folderu WinSXS, jeśli chodzi o rejestrowanie rzeczy, tworzy kopie kopii, chyba że ręcznie usuniesz lub zmniejszysz rozmiar pliku, który będzie zjadał na twoim dysku. Nazywam to plikami cookie boot loader.


źle. to nie są kopie i ma konfigurowalny limit freedesktop.org/software/systemd/man/journald.conf.html
pal
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.