GNU/Linux >> Znalost Linux >  >> Linux

Jak spustím druhý shell v režimu jednoho uživatele?

Řešení 1:

Existuje příkaz speciálně navržený pro tuto situaci:openvt . Stačí spustit openvt z vašeho shellu na tty1 a najdete shell spuštěný na prvním tty, který na něm ještě něco neměl (pravděpodobně tty2.) Existuje několik možností, které se vám mohou hodit; viz manuálovou stránku openvt.

Protože toto není přihlášení spravované getty, když opustíte nový shell, neuvidíte výzvu k přihlášení. Tty prostě zmizí, protože na něm nebudou běžet žádné procesy, ale stále budete moci přepínat tam a zpět (Alt-F1 Alt-F2) a vidět, co bylo na obrazovce, když jste opustili shell. deallocvt příkaz zničí ttys, které jsou v tomto stavu podobném zombie, a vrátí se do původního stavu „Alt-F2 nedělá nic“.

Původně se tyto příkazy nazývaly open a disalloc , ale nakonec se někdo rozhodl je změnit, protože byly příliš obecné a dislokace byla posouzena jako „není slovo“.

Za starých časů bylo běžné, že ovladač klávesnice a init byly nakonfigurovány tak, aby Alt+Up spouštěly open , takže by fungoval jako klávesová zkratka pro vytvoření shellu na nové konzoli. Ve vašem /etc/inittab můžete stále najít zbytek této staré konfigurace, zakomentovaný . (Pokud nepoužíváte nějaký efektní nový init, který nemá inittab .)

Podobná otázka je zde

Řešení 2:

Mohli byste vytvořit další getty pro kterékoli ttys chcete. Spusťte režim pro jednoho uživatele a poté spusťte getty na tty2:

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

Nyní můžete Alt +F2 do nového tty. Opakujte pro další tty podle potřeby. Pravděpodobně byste mohli udělat něco čistšího a nakonfigurovat /etc/inittab pro automatické zpracování v režimu jednoho uživatele.

Řešení 3:

Pravděpodobně se obejdete bez další instance shellu pomocí JOB CONTROL ve vašem aktuálním shellu. Je to zdokumentováno v manuálové stránce bash(1) .

Úlohu můžete jednoduše pozastavit pomocí Ctrl +Z sekvence ve výchozím nastavení, i když ji lze ve vašem terminálu nakonfigurovat jiným způsobem, zkontrolujte výstup stty -a :

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

Své úlohy můžete zkontrolovat vydáním jobs :

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

Přeneste jeden z nich do popředí:

$ fg %3

Nebo jej obnovte na pozadí:

$ bg %2

Tato metoda nemá mnoho výhod screen nebo tmux , ale v některých situacích může být stejně užitečný.


Linux
  1. Linux pro jednoho uživatele

  2. Jak spustit všechny relace Shell v jiném adresáři než $home?

  3. Jak číst pouze jeden znak ve skriptu shellu

  1. CentOS / RHEL :Jak změnit přihlašovací shell uživatele

  2. Kdy zalomit uvozovky kolem proměnné shellu?

  3. Jak přinutit Fedoru 12 ke spuštění do textového režimu?

  1. Jak začnu v bash, když ssh'dám na můj server?

  2. Jak mohu někomu bezpečně dát skořápku?

  3. Vyzvat uživatele k přihlášení jako root při spuštění skriptu shellu