GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie starte ich im Einzelbenutzermodus eine zweite Shell?

Lösung 1:

Es gibt einen Befehl, der speziell für diese Situation entwickelt wurde:openvt . Führen Sie einfach openvt aus von Ihrer Shell auf tty1 und Sie werden eine Shell finden, die auf dem ersten tty läuft, auf dem noch nichts war (wahrscheinlich tty2). Es gibt mehrere Optionen, die Sie nützlich finden könnten; siehe die Manpage von openvt.

Da dies keine von getty verwaltete Anmeldung ist, wird beim Verlassen der neuen Shell keine Anmeldeaufforderung angezeigt. Das tty wird einfach tot sein, da keine Prozesse darauf laufen, aber Sie können immer noch hin und her wechseln (Alt-F1 Alt-F2) und sehen, was auf dem Bildschirm war, als Sie die Shell beendeten. Die deallocvt Der Befehl zerstört ttys, die sich in diesem zombieähnlichen Zustand befinden, und kehrt zum ursprünglichen "Alt-F2 tut nichts"-Zustand zurück.

Ursprünglich hießen diese Befehle open und disalloc , aber irgendwann beschloss jemand, sie zu ändern, weil sie zu allgemein waren und die Aufhebung der Zuordnung als "kein Wort" gewertet wurde.

Früher war es üblich, den Tastaturtreiber und Init so zu konfigurieren, dass Alt+Up open ausführte , also würde es als Hotkey fungieren, um eine Shell auf einer neuen Konsole zu erzeugen. Möglicherweise finden Sie noch einen auskommentierten Rest dieser alten Konfiguration in Ihrem /etc/inittab . (Wenn Sie nicht irgendein schickes neues Init verwenden, das kein inittab hat .)

Hier gibt es eine ähnliche Frage

Lösung 2:

Du könntest einen weiteren getty spawnen für welche ttys Sie wollen. Booten Sie in den Einzelbenutzermodus und starten Sie dann getty auf tty2:

[email protected]:~# /sbin/getty 38400 tty2 &

Sie können jetzt Alt drücken +F2 rüber zum neuen tty. Wiederholen Sie dies nach Bedarf für weitere ttys. Sie könnten wahrscheinlich etwas Saubereres tun und einfach /etc/inittab konfigurieren um dies automatisch im Einzelbenutzermodus zu handhaben.

Lösung 3:

Sie können wahrscheinlich auf eine zusätzliche Shell-Instanz verzichten, indem Sie JOB CONTROL verwenden in Ihrer aktuellen Shell. Es ist in der Manpage von bash(1) dokumentiert .

Sie können eine Aufgabe einfach mit Strg anhalten +Z Sequenz standardmäßig, obwohl es in Ihrem Terminal anders konfiguriert werden kann, überprüfen Sie die Ausgabe von stty -a :

$ stty -a | grep susp
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;

Sie können Ihre Jobs überprüfen, indem Sie jobs ausgeben :

# jobs
[1]   Stopped                 journalctl -f
[2]-  Stopped                 vim /etc/hosts
[3]+  Stopped                 tail -f /var/log/firewalld

Bringen Sie einen davon in den Vordergrund:

$ fg %3

Oder im Hintergrund fortsetzen:

$ bg %2

Diese Methode hat viele der Vorteile von screen nicht oder tmux , kann aber in manchen Situationen ebenso nützlich sein.


Linux
  1. Wie lösche ich Root-Rechte in Shell-Skripten?

  2. So erstellen Sie einen SFTP-Benutzer ohne Shell-Zugriff unter CentOS 8

  3. So lesen Sie nur ein einzelnes Zeichen in Shell-Skript

  4. Wie starte ich in Bash, wenn ich in meinen Server ssh'e?

  5. Fordert den Benutzer auf, sich als Root anzumelden, wenn ein Shell-Skript ausgeführt wird

So booten Sie RHEL 7 / CentOS 7 Server im Einzelbenutzermodus

So booten Sie CentOS 8 / RHEL 8 Server im Einzelbenutzermodus

So starten Sie Fish Shell im privaten Modus unter Linux

CentOS / RHEL 6:So booten Sie in den Einzelbenutzermodus

CentOS / RHEL 5 :So schützen Sie den Einzelbenutzermodus mit einem Kennwort

CentOS / RHEL 6 :So schützen Sie den Einzelbenutzermodus mit einem Kennwort