Ich kenne die Antworten unten nicht, aber in RHEL / Centos 7.6 init 1oder init 3oder init 5oder init 6oder init 0oder benehme runlevelich mich immer noch so, wie sie es immer getan haben, und das ist alles, was mich interessiert. Viele einfache Syntax dannsystemctl blabla blabla.blabla
Innerhalb des SystemD (Aemon) werden Runlevel als "Targets" angezeigt. Das Konzept ist noch vorhanden, aber der Workflow, um das gewünschte Ergebnis für Ihre Anforderung zu erzielen, ist unterschiedlich.
Das beigefügte sollte dieses Problem klären.
Wie ändere ich den aktuellen Runlevel?
$ systemctl isolate runlevelX.target
Wie ändere ich das Standard-Runlevel für den nächsten Start?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGETDESTINATION
-s schafft symbolische Verbindung
-f Entfernt die vorhandene Zieldatei
ODER (wie @centimane vorschlug) benutze einfach den "gesegneten" systemdBefehl:
Willkommen bei Unix & Linux! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
slm
Kann ich trotzdem mit dem Befehl init zwischen Runleveln wechseln?
drpaneas
2
Wenn Ihr Systemd-Paket mit SysV-kompatibler Unterstützung erstellt wurde, enthält es einen Telinit-Symlink zur Systemd-Binärdatei, die, wenn sie als Telinit bezeichnet wird, Runlevel 0-6 auf Systemd-Ziele abbildet. Überprüfen Sie Telinit (8) auf eine Liste dieser Zuordnungen .
Wieland
2
Um das Standardziel zu ändern, sollten Sie systemctl set-default [target name].targetden Link nicht manuell erstellen, sondern verwenden.
Centimane
12
Nein. Wie die System-Leute selbst zweimal geschrieben haben, einmal in ihrem telinitHandbuch und einmal in ihrem runlevelHandbuch, sind Runlevel "obsolet". Sie können Runlevel vergessen.
Diese Dinge gibt es in systemd überhaupt nicht, abgesehen von ein paar Kompatibilitätsscheiben.
Es gibt einige symbolische Links für Zielnamen, aber diese Ziele werden von systemd proper niemals verwendet.
Vielmehr verwendet der Bootstrap-Prozess a default.target(und von dort eines oder beide von a graphical.targetund a multi-user.target), a rescue.targetoder an emergency.target. Und das Herunterfahren beinhaltet a shutdown.target, a reboot.target, a halt.targetoder a poweroff.target. Weder beim Booten noch beim Herunterfahren sind Run-Level-Ziele beteiligt .
Der telinitBefehl, von dem man annehmen könnte, dass er die symbolischen Kompatibilitätslinks verwendet, um seine Befehlszeilenargumente zuzuordnen, tut dies auch nicht. Es gibt eine fest verdrahtete Tabelle im Quellcode des telinitProgramms, und die Zahlen 2, 3, 4, und 5als Argument für den Befehl werden abzubilden fest verdrahtet zu multi-user.targetund graphical.target.
systemd-update-utmp hat auch eine interne festverdrahtete Tabelle.
Es gibt keine "Init-Tabelle" für Runlevel-Inhalte. systemd ist nur mit van Smoorenburg kompatibel rc, nicht mit van Smoorenburg init.
Es gibt keinen "aktuellen Run Level" -Wert, der von systemd selbst verwaltet wird. Vielmehr ist der fast ganz ohne Papiere systemd-update-utmparbeitet Befehl intern in Bezug auf den Aktivierungszustände von rescue.target, multi-user.target, und graphical.target.
systemd-sysv-generator, der Abwärtskompatibilitäts-Service-Unit-Generator von systemd, führt die /etc/rc[234].dVerzeichnisse in nur einer Wanted-ByBeziehung zu den multi-user.targetgenerierten Service-Units zusammen. In den generierten Serviceeinheiten gibt es keinen tatsächlichen Verweis auf Laufebenen. (Früher gab es vor Jahren, aber die Systemleute stellten fest, dass dies schief ging, weil sie nirgendwo anders referenziert wurden.)
Wenn man ein Benutzer eines Systems ist, das systemd wie Arch Linux für den Fragesteller unter " Warum führt" init 0 "zu" Excess Arguments "bei der Arch-Installation? " Erstellt , erhält man nicht einmal die Kompatibilitäts-Shims und Befehle wie z als init 0Ergebnis das "native" systemd-Verhalten, bei dem zu beanstanden ist, dass der Befehl falsch aufgerufen wurde.
Weitere Lektüre
Lennart Pöttering et al runlevel. systemd manpages. Freedesktop.org.
Lennart Pöttering et al telinit. systemd manpages. Freedesktop.org.
Lennart Pöttering et al bootup. systemd manpages. Freedesktop.org.
Wie Sie sehen, gibt es das Konzept der Runlevels, es ist jedoch ziemlich veraltet, da die runlevel.target-Dateien keine „echten“ Dateien sind, sondern Verknüpfungen zu dem neuen, modernen, besser benannten Dateischema, das systemd nennt sie gerne "Ziele".
Wenn Sie also etwas tun möchten, das Ihnen gefällt, dann ist telinit 5es so: systemctl isolate runlevel5.target
was identisch ist mit: systemctl isolate graphical.target(meiner Meinung nach empfohlen).
Nur für den Fall, dass Sie interessiert sind, alle möglichen Ziele zu kennen:
Ja, ich glaube, dass Sie das richtig verstehen. Ich werde ein später Anwender von SystemD sein, da das prozedurale, schrittweise INIT.D-System das ist, mit dem ich am vertrautesten bin ... Ich begrüße, dass Sie SystemD untersuchen. Das Beste an SystemD ist das parallele Multithreading, das einen schnelleren Start ermöglicht. Der Multithreading-Start kann mit INIT.D durchgeführt werden, erfordert jedoch starkes BASH-Scripting.
Tyler Maginnis
Übrigens ls -llist gleichbedeutend mit ls -l. Vielleicht möchten Sie es sich zur Gewohnheit machen, etwas zu benutzen ls -ld.
G-Man sagt, dass Monica
telinit 0/ telinit 6Immer noch funktionieren. Da dies bei der Migration hilft und ich denke, dass die meisten Distributionen noch keinen Grund sehen, den Support einzustellen. isolateklar angestrebt, nachzuahmen, wie Run-Levels funktionieren, aber es gibt verschiedene böse Randfälle. Ich kann nur empfehlen, alle Anweisungen zu ignorieren isolate runlevel5.targetoder gar isolate graphical.target. Beispiel für einen Edge-Fall: github.com/systemd/systemd/issues/6505
sourcejedi
0
systemd führte Ziele als Gegenstück für Runlevel im sysV init-System ein. sytemd-Entwickler haben es fast kompatibel mit den meisten sysV-Skripten gemacht. Gleiches gilt für
telinit <runlevel>. Dies wird in ein systemd-Äquivalent übersetzt.
Zum Beispiel telinit 0schaltet die Maschine aus. systemd hat poweroff.target , um dasselbe wie runlevel 0 zu machen . So telinit 0wird von systemd zu activate übersetzt poweroff.target .
init 1
oderinit 3
oderinit 5
oderinit 6
oderinit 0
oder benehmerunlevel
ich mich immer noch so, wie sie es immer getan haben, und das ist alles, was mich interessiert. Viele einfache Syntax dannsystemctl blabla blabla.blabla
Antworten:
SystemD Run-Level Low-Down
Innerhalb des SystemD (Aemon) werden Runlevel als "Targets" angezeigt. Das Konzept ist noch vorhanden, aber der Workflow, um das gewünschte Ergebnis für Ihre Anforderung zu erzielen, ist unterschiedlich.
Das beigefügte sollte dieses Problem klären.
Wie ändere ich den aktuellen Runlevel?
Wie ändere ich das Standard-Runlevel für den nächsten Start?
ln -sf TARGET DESTINATION
-s
schafft symbolische Verbindung-f
Entfernt die vorhandene ZieldateiODER (wie @centimane vorschlug) benutze einfach den "gesegneten"
systemd
Befehl:Wie identifiziere ich den aktuellen Runlevel?
quelle
systemctl set-default [target name].target
den Link nicht manuell erstellen, sondern verwenden.Nein. Wie die System-Leute selbst zweimal geschrieben haben, einmal in ihrem
telinit
Handbuch und einmal in ihremrunlevel
Handbuch, sind Runlevel "obsolet". Sie können Runlevel vergessen.Diese Dinge gibt es in systemd überhaupt nicht, abgesehen von ein paar Kompatibilitätsscheiben.
default.target
(und von dort eines oder beide von agraphical.target
und amulti-user.target
), arescue.target
oder anemergency.target
. Und das Herunterfahren beinhaltet ashutdown.target
, areboot.target
, ahalt.target
oder apoweroff.target
. Weder beim Booten noch beim Herunterfahren sind Run-Level-Ziele beteiligt .telinit
Befehl, von dem man annehmen könnte, dass er die symbolischen Kompatibilitätslinks verwendet, um seine Befehlszeilenargumente zuzuordnen, tut dies auch nicht. Es gibt eine fest verdrahtete Tabelle im Quellcode destelinit
Programms, und die Zahlen2
,3
,4
, und5
als Argument für den Befehl werden abzubilden fest verdrahtet zumulti-user.target
undgraphical.target
.systemd-update-utmp
hat auch eine interne festverdrahtete Tabelle.rc
, nicht mit van Smoorenburginit
.systemd-update-utmp
arbeitet Befehl intern in Bezug auf den Aktivierungszustände vonrescue.target
,multi-user.target
, undgraphical.target
.systemd-sysv-generator
, der Abwärtskompatibilitäts-Service-Unit-Generator von systemd, führt die/etc/rc[234].d
Verzeichnisse in nur einerWanted-By
Beziehung zu denmulti-user.target
generierten Service-Units zusammen. In den generierten Serviceeinheiten gibt es keinen tatsächlichen Verweis auf Laufebenen. (Früher gab es vor Jahren, aber die Systemleute stellten fest, dass dies schief ging, weil sie nirgendwo anders referenziert wurden.)Wenn man ein Benutzer eines Systems ist, das systemd wie Arch Linux für den Fragesteller unter " Warum führt" init 0 "zu" Excess Arguments "bei der Arch-Installation? " Erstellt , erhält man nicht einmal die Kompatibilitäts-Shims und Befehle wie z als
init 0
Ergebnis das "native" systemd-Verhalten, bei dem zu beanstanden ist, dass der Befehl falsch aufgerufen wurde.Weitere Lektüre
runlevel
. systemd manpages. Freedesktop.org.telinit
. systemd manpages. Freedesktop.org.bootup
. systemd manpages. Freedesktop.org./etc/inittab
gehört der Vergangenheit an. . Häufig gestellte Fragen.quelle
Vielen Dank. Also, wenn ich richtig verstanden habe:
Beispielsweise:
Ausgabe:
Wie Sie sehen, gibt es das Konzept der Runlevels, es ist jedoch ziemlich veraltet, da die runlevel.target-Dateien keine „echten“ Dateien sind, sondern Verknüpfungen zu dem neuen, modernen, besser benannten Dateischema, das systemd nennt sie gerne "Ziele".
Wenn Sie also etwas tun möchten, das Ihnen gefällt, dann ist
telinit 5
es so:systemctl isolate runlevel5.target
was identisch ist mit:systemctl isolate graphical.target
(meiner Meinung nach empfohlen).Nur für den Fall, dass Sie interessiert sind, alle möglichen Ziele zu kennen:
quelle
ls -ll
ist gleichbedeutend mitls -l
. Vielleicht möchten Sie es sich zur Gewohnheit machen, etwas zu benutzenls -ld
.telinit 0
/telinit 6
Immer noch funktionieren. Da dies bei der Migration hilft und ich denke, dass die meisten Distributionen noch keinen Grund sehen, den Support einzustellen.isolate
klar angestrebt, nachzuahmen, wie Run-Levels funktionieren, aber es gibt verschiedene böse Randfälle. Ich kann nur empfehlen, alle Anweisungen zu ignorierenisolate runlevel5.target
oder garisolate graphical.target
. Beispiel für einen Edge-Fall: github.com/systemd/systemd/issues/6505systemd führte Ziele als Gegenstück für Runlevel im sysV init-System ein. sytemd-Entwickler haben es fast kompatibel mit den meisten sysV-Skripten gemacht. Gleiches gilt für
telinit <runlevel>
. Dies wird in ein systemd-Äquivalent übersetzt.Zum Beispiel
telinit 0
schaltet die Maschine aus. systemd hat poweroff.target , um dasselbe wie runlevel 0 zu machen . Sotelinit 0
wird von systemd zu activate übersetzt poweroff.target .Es gibt jedoch einige Kompatibilitätsprobleme mit sytemd- und sysV init-Systemen -> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities .
quelle