GNU/Linux >> Tutoriels Linux >  >> Linux

Comment démarrer un deuxième shell en mode mono-utilisateur ?

Solution 1 :

Il existe une commande spécialement conçue pour cette situation :openvt . Exécutez simplement openvt depuis votre shell sur tty1 et vous trouverez un shell s'exécutant sur le premier tty qui n'avait pas déjà quelque chose dessus (tty2 probablement.) Il existe plusieurs options qui pourraient vous être utiles ; voir la page de manuel openvt.

Comme il ne s'agit pas d'une connexion gérée par getty, lorsque vous quittez le nouveau shell, aucune invite de connexion ne s'affiche. Le terminal s'arrêtera car il n'y aura pas de processus en cours d'exécution dessus, mais vous pourrez toujours basculer (Alt-F1 Alt-F2) et voir ce qui était à l'écran lorsque vous avez quitté le shell. Le deallocvt La commande détruit les ttys qui sont dans cet état de type zombie, retournant à l'état d'origine "Alt-F2 ne fait rien".

À l'origine, ces commandes s'appelaient open et disalloc , mais finalement quelqu'un a décidé de les changer parce qu'ils étaient trop génériques et désaffecter a été jugé comme "pas un mot".

Auparavant, il était courant que le pilote du clavier et init soient configurés de manière à ce que Alt + Up exécute open , il agirait donc comme un raccourci clavier pour générer un shell sur une nouvelle console. Vous pouvez toujours trouver un reste de cette ancienne configuration, commentée, dans votre /etc/inittab . (Si vous n'utilisez pas une nouvelle initialisation fantaisiste qui n'a pas de inittab .)

Il y a une question similaire ici

Solution 2 :

Vous pourriez générer un autre getty pour tous les ttys que vous voulez. Démarrez en mode mono-utilisateur, puis démarrez un getty sur tty2 :

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

Vous pouvez maintenant Alt +F2 vers le nouveau tty. Répétez l'opération pour d'autres ttys si nécessaire. Vous pourriez probablement faire quelque chose de plus propre et simplement configurer /etc/inittab pour gérer automatiquement cela en mode mono-utilisateur.

Solution 3 :

Vous pouvez probablement vous passer d'une instance de shell supplémentaire en utilisant JOB CONTROL dans votre shell actuel. Il est documenté dans la page de manuel de bash(1) .

Vous pouvez simplement suspendre une tâche en utilisant la touche Ctrl +Z séquence par défaut, bien qu'elle puisse être configurée dans votre terminal d'une manière différente, vérifiez la sortie de stty -a :

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

Vous pouvez vérifier vos travaux en émettant jobs :

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

Amenez l'un d'entre eux au premier plan :

$ fg %3

Ou reprenez-le en arrière-plan :

$ bg %2

Cette méthode n'a pas beaucoup des avantages de screen ou tmux , mais peut être tout aussi utile dans certaines situations.


Linux
  1. Mode mono-utilisateur Linux

  2. Comment supprimer les privilèges root dans les scripts Shell ?

  3. Quand mettre des guillemets autour d'une variable shell ?

  4. Comment forcer Fedora 12 à démarrer en mode texte ?

  5. Comment démarrer en bash lorsque je me connecte en ssh à mon serveur ?

Comment démarrer le serveur RHEL 7 / CentOS 7 en mode mono-utilisateur

Comment démarrer le serveur CentOS 8 / RHEL 8 en mode mono-utilisateur

Comment lancer Fish Shell en mode privé sous Linux

CentOS / RHEL 6 :Comment démarrer en mode mono-utilisateur

CentOS / RHEL 5 :Comment protéger par mot de passe le mode mono-utilisateur

CentOS / RHEL 6 :Comment protéger par mot de passe le mode mono-utilisateur