nie wiem o poniższych odpowiedzi, ale w RHEL / Centos 7.6 init 1lub init 3lub init 5lub init 6lub init 0lub runlevelnadal zachowują się jak oni zawsze mają, i to wszystko mnie obchodzi. Znacznie łatwiejsza składniasystemctl blabla blabla.blabla
W SystemD (aemon) poziomy uruchamiania są widoczne jako „Cele”. Koncepcja wciąż istnieje, ale przepływ pracy w celu uzyskania pożądanego rezultatu dla twoich wymagań jest inny.
W załączeniu należy wyjaśnić tę kwestię.
Jak zmienić bieżący poziom działania?
$ systemctl isolate runlevelX.target
Jak zmienić domyślny poziom uruchamiania dla następnego rozruchu?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGETDESTINATION
-s tworzy dowiązanie symboliczne
-f usuwa istniejący plik docelowy
LUB (jak sugeruje @centimane) po prostu użyj polecenia „błogosławiony” systemd:
Czy nadal mogę używać polecenia init do przełączania między poziomami działania?
drpaneas
2
Jeśli twój pakiet systemd jest zbudowany ze wsparciem dla SysV, będzie zawierał dowiązanie symboliczne telinit do binarnego systemd, które po wywołaniu jako telinit odwzoruje poziomy uruchamiania 0-6 na cele systemowe - sprawdź telinit (8), aby uzyskać listę tych mapowań .
Nie. Jak sami ludzie systemowi napisali dwa razy, raz w telinitpodręczniku i raz w runlevelpodręczniku, poziomy uruchamiania są „przestarzałe”. Możesz zapomnieć o poziomach pracy.
Te rzeczy w ogóle nie istnieją w systemie, bez kilku podkładek kompatybilności.
Istnieje kilka dowiązań symbolicznych dla nazw celów, ale cele te nigdy nie są właściwie używane przez systemd.
Raczej proces ładowania początkowego wykorzystuje default.target(a stąd jeden lub oba z a graphical.targeti a multi-user.target), a rescue.targetlub an emergency.target. A proces zamykania obejmuje a shutdown.target, a reboot.target, a halt.targetlub a poweroff.target. Żadne cele docelowe nie są zaangażowane ani w bootstrap, ani w zamknięcie.
telinitPoleceń, które można by pomyśleć korzysta z kompatybilnością symboliczne linki do mapy swoje argumenty wiersza poleceń, nie robi albo. Jest przewodowych tabeli w kodzie źródłowym telinitprogramu, a numery 2, 3, 4, i 5jako argumenty polecenia były włączone do mapowania multi-user.targeti graphical.target.
systemd-update-utmp ma również wewnętrzny stolik przewodowy.
Nie ma „tabeli inicjacji” elementów poziomu pracy. Systemd jest kompatybilny tylko z van Smoorenburg rc, a nie z van Smoorenburg init.
Sam systemd nie utrzymuje wartości „bieżącego poziomu pracy”. Przeciwnie, niemal całkowicie nieudokumentowana systemd-update-utmpkomenda działa wewnętrznie pod względem aktywacji Zjednoczone rescue.target, multi-user.targetoraz graphical.target.
systemd-sysv-generator, systemd generator jednostek usług kompatybilności wstecznej, łączy /etc/rc[234].dkatalogi w jedną Wanted-Byrelację do multi-user.targetgenerowanych jednostek usług. Brak rzeczywistego odniesienia do poziomów uruchamiania w wygenerowanych jednostkach serwisowych. (Kiedyś, dawno temu, ale usystematyzowani ludzie stwierdzili, że to poszło nie tak, ponieważ nie było ich nigdzie indziej.)
Jeśli ktoś jest użytkownikiem systemu, który buduje systemd, podobnie jak Arch Linux dla pytającego w „ Dlaczego„ init 0 ”powoduje„ Nadmiar argumentów ”podczas instalacji Arch? ”, To nawet nie dostaje podkładek kompatybilności i takie polecenia w init 0wyniku „systemowego” zachowania systemowego, które polega na narzekaniu, że polecenie zostało niepoprawnie wywołane.
Dalsza lektura
Lennart Poettering i in runlevel. systemowe strony podręcznika. Freedesktop.org.
Lennart Poettering i in telinit. systemowe strony podręcznika. Freedesktop.org.
Lennart Poettering i in bootup. systemowe strony podręcznika. Freedesktop.org.
Jak widać, koncepcja poziomów działania istnieje, ale jest dość przestarzała, ponieważ pliki runlevel.target nie są tak naprawdę „prawdziwymi” plikami, ale miękkimi linkami do nowego, nowoczesnego, lepiej nazwanego schematu plików, który systemd lubi nazywać je „celami”.
Więc jeśli chciałbyś zrobić coś takiego, telinit 5to byłoby tak: systemctl isolate runlevel5.target
co jest identyczne z: systemctl isolate graphical.target(moim zdaniem zalecane).
Na wypadek, gdybyś był zainteresowany wszystkimi możliwymi celami:
Tak, uważam, że rozumiesz to poprawnie. Spóźnię się z przyjęciem SystemD, ponieważ system INIT.D, krok po kroku, jest tym, co znam najbardziej ... Pochwalam, że odkrywasz SystemD. Najlepszą częścią SystemD jest równoległe wielowątkowość, która umożliwia szybsze uruchamianie. Uruchamianie wielowątkowe można wykonać za pomocą INIT.D, ale wymaga silnego skryptu BASH.
Tyler Maginnis
BTW, ls -lljest równoważne z ls -l. Możesz przyzwyczaić się do używania ls -ld.
G-Man mówi „Przywróć Monikę”
telinit 0/ telinit 6wciąż pracuję. Ponieważ pomaga to w migracji, i myślę, że większość dystrybucji wciąż nie widzi powodu, aby zrezygnować z obsługi. isolatewyraźnie dążyło do naśladowania działania poziomów uruchamiania, ale istnieją różne przypadki zła. Bardzo polecam ignorowanie wszystkich instrukcji, isolate runlevel5.targeta nawet isolate graphical.target. Przykładowy przypadek na krawędzi: github.com/systemd/systemd/issues/6505
sourcejedi
0
Systemd wprowadzono cele jako odpowiednik dla poziomów pracy w init sysv. programiści sytemd sprawili, że jest prawie kompatybilny z większością skryptów sysV. To samo dzieje się z
telinit <runlevel>. Przekłada się to na odpowiednik systemowy.
Na przykład telinit 0wyłącza maszynę. systemd ma poweroff.target, aby zrobić to samo co poziom pracy 0 . Tak telinit 0jest tłumaczone przez systemd, aby aktywować poweroff.target .
init 1
lubinit 3
lubinit 5
lubinit 6
lubinit 0
lubrunlevel
nadal zachowują się jak oni zawsze mają, i to wszystko mnie obchodzi. Znacznie łatwiejsza składniasystemctl blabla blabla.blabla
Odpowiedzi:
SystemD Run-Level Low-Down
W SystemD (aemon) poziomy uruchamiania są widoczne jako „Cele”. Koncepcja wciąż istnieje, ale przepływ pracy w celu uzyskania pożądanego rezultatu dla twoich wymagań jest inny.
W załączeniu należy wyjaśnić tę kwestię.
Jak zmienić bieżący poziom działania?
Jak zmienić domyślny poziom uruchamiania dla następnego rozruchu?
ln -sf TARGET DESTINATION
-s
tworzy dowiązanie symboliczne-f
usuwa istniejący plik docelowyLUB (jak sugeruje @centimane) po prostu użyj polecenia „błogosławiony”
systemd
:Jak zidentyfikować bieżący poziom działania?
źródło
systemctl set-default [target name].target
zamiast ręcznie tworzyć link.Nie. Jak sami ludzie systemowi napisali dwa razy, raz w
telinit
podręczniku i raz wrunlevel
podręczniku, poziomy uruchamiania są „przestarzałe”. Możesz zapomnieć o poziomach pracy.Te rzeczy w ogóle nie istnieją w systemie, bez kilku podkładek kompatybilności.
default.target
(a stąd jeden lub oba z agraphical.target
i amulti-user.target
), arescue.target
lub anemergency.target
. A proces zamykania obejmuje ashutdown.target
, areboot.target
, ahalt.target
lub apoweroff.target
. Żadne cele docelowe nie są zaangażowane ani w bootstrap, ani w zamknięcie.telinit
Poleceń, które można by pomyśleć korzysta z kompatybilnością symboliczne linki do mapy swoje argumenty wiersza poleceń, nie robi albo. Jest przewodowych tabeli w kodzie źródłowymtelinit
programu, a numery2
,3
,4
, i5
jako argumenty polecenia były włączone do mapowaniamulti-user.target
igraphical.target
.systemd-update-utmp
ma również wewnętrzny stolik przewodowy.rc
, a nie z van Smoorenburginit
.systemd-update-utmp
komenda działa wewnętrznie pod względem aktywacji Zjednoczonerescue.target
,multi-user.target
orazgraphical.target
.systemd-sysv-generator
, systemd generator jednostek usług kompatybilności wstecznej, łączy/etc/rc[234].d
katalogi w jednąWanted-By
relację domulti-user.target
generowanych jednostek usług. Brak rzeczywistego odniesienia do poziomów uruchamiania w wygenerowanych jednostkach serwisowych. (Kiedyś, dawno temu, ale usystematyzowani ludzie stwierdzili, że to poszło nie tak, ponieważ nie było ich nigdzie indziej.)Jeśli ktoś jest użytkownikiem systemu, który buduje systemd, podobnie jak Arch Linux dla pytającego w „ Dlaczego„ init 0 ”powoduje„ Nadmiar argumentów ”podczas instalacji Arch? ”, To nawet nie dostaje podkładek kompatybilności i takie polecenia w
init 0
wyniku „systemowego” zachowania systemowego, które polega na narzekaniu, że polecenie zostało niepoprawnie wywołane.Dalsza lektura
runlevel
. systemowe strony podręcznika. Freedesktop.org.telinit
. systemowe strony podręcznika. Freedesktop.org.bootup
. systemowe strony podręcznika. Freedesktop.org./etc/inittab
należy już do przeszłości. . Często udzielane odpowiedzi.źródło
Dziękuję bardzo. Więc jeśli dobrze zrozumiałem:
Na przykład:
Wynik:
Jak widać, koncepcja poziomów działania istnieje, ale jest dość przestarzała, ponieważ pliki runlevel.target nie są tak naprawdę „prawdziwymi” plikami, ale miękkimi linkami do nowego, nowoczesnego, lepiej nazwanego schematu plików, który systemd lubi nazywać je „celami”.
Więc jeśli chciałbyś zrobić coś takiego,
telinit 5
to byłoby tak:systemctl isolate runlevel5.target
co jest identyczne z:systemctl isolate graphical.target
(moim zdaniem zalecane).Na wypadek, gdybyś był zainteresowany wszystkimi możliwymi celami:
źródło
ls -ll
jest równoważne zls -l
. Możesz przyzwyczaić się do używanials -ld
.telinit 0
/telinit 6
wciąż pracuję. Ponieważ pomaga to w migracji, i myślę, że większość dystrybucji wciąż nie widzi powodu, aby zrezygnować z obsługi.isolate
wyraźnie dążyło do naśladowania działania poziomów uruchamiania, ale istnieją różne przypadki zła. Bardzo polecam ignorowanie wszystkich instrukcji,isolate runlevel5.target
a nawetisolate graphical.target
. Przykładowy przypadek na krawędzi: github.com/systemd/systemd/issues/6505Systemd wprowadzono cele jako odpowiednik dla poziomów pracy w init sysv. programiści sytemd sprawili, że jest prawie kompatybilny z większością skryptów sysV. To samo dzieje się z
telinit <runlevel>
. Przekłada się to na odpowiednik systemowy.Na przykład
telinit 0
wyłącza maszynę. systemd ma poweroff.target, aby zrobić to samo co poziom pracy 0 . Taktelinit 0
jest tłumaczone przez systemd, aby aktywować poweroff.target .Ale istnieją pewne problemy ze zgodnością w systemach inicjujących sytemd i sysV-> https://www.freedesktop.org/wiki/Software/systemd/Incompatabilities .
źródło