Isso pode parecer uma contradição em termos, mas recentemente precisei usar o modo de usuário único (também conhecido como modo de manutenção) por algum tempo (dias!) Enquanto tentava reconstruir um array RAID quebrado.
Enquanto fazia isso, me vi querendo usar um segundo shell para coisas como verificar / editar as configurações em vários arquivos de configuração ou examinar os logs do sistema enquanto o console principal (e único) está ligado, executando algum processo de recuperação.
Qual seria o comando recomendado para iniciar um segundo shell em outro tty?
Obviamente, um método pode ser o de usar screen
no tty1, mas isso não tem a facilidade de alternar apenas sessões com Alt-F1, Alt-F2, etc.
screen
é tão fácil quanto isso. Não Ctrl AP não parecer muito mais complicado do que Alt F1 ...screen
etmux
para gerenciamento de janelas TUI nem sempre funcionam. Às vezes você precisa de umttyX
dispositivo real , em vez de umpts
.Respostas:
Há um comando projetado especificamente para esta situação:
openvt
. Basta executar aopenvt
partir do seu shell em tty1 e você encontrará um shell em execução no primeiro tty que ainda não tinha algo (provavelmente tty2). Existem várias opções que você pode achar úteis; veja a página de manual do openvt.Como este não é um login gerenciado pelo getty, quando você sair do novo shell, não verá um prompt de login. O tty simplesmente ficará inoperante, pois não haverá processos em execução nele, mas você ainda poderá alternar (Alt-F1 Alt-F2) e ver o que estava na tela quando saiu do shell. O
deallocvt
comando destrói ttys que estão nesse estado zumbi, retornando ao estado original "Alt-F2 não faz nada".Originalmente, esses comandos foram chamados
open
edisalloc
, mas, eventualmente, alguém decidiu alterá-los porque eram muito genéricos e desalocados, sendo considerados "nem uma palavra".Antigamente, era comum o driver do teclado e o init serem configurados para que o Alt + Up funcionasse
open
, de modo que funcionasse como uma tecla de atalho para gerar um shell em um novo console. Você ainda pode encontrar um remanescente dessa configuração antiga, comentada, no seu/etc/inittab
. (Se você não estiver usando um novo init sofisticado que não tenha uminittab
.)Há uma pergunta semelhante aqui
fonte
openvt
. +1.openvt
provando ser muito útil. Obrigado por trazer um novo comando ao meu aviso.Você pode gerar outro
getty
para o tipo que desejar. Inicialize no modo de usuário único e inicie umgetty
em tty2:Agora você pode Alt+ F2passar para o novo tty. Repita o procedimento para ttys adicionais, conforme necessário. Você provavelmente poderia fazer algo mais limpo e apenas configurar
/etc/inittab
para lidar automaticamente com isso no modo de usuário único.fonte
init
, ela não é gerada novamente se morrer./etc/inittab
e,/etc/rc1.d/S??single
pelo menos.Você provavelmente pode ficar sem uma instância extra do shell usando
JOB CONTROL
no seu shell atual. Está documentado na página de manual dobash(1)
.Você pode simplesmente suspender uma tarefa usando a sequência Ctrl+ Zpor padrão, embora ela possa ser configurada no seu terminal de uma maneira diferente, verifique a saída de
stty -a
:Você pode verificar seus trabalhos emitindo
jobs
:Traga um deles para o primeiro plano:
Ou retome-o em segundo plano:
Este método não possui muitas vantagens
screen
outmux
, mas pode ser igualmente útil em algumas situações.fonte
ddrescue
Eu não quero manter interromper e retomar-lo mesmo que ele está configurado para fazer isso ..csh
,tcsh
ouzsh
, por exemplo), então mencionar sua manpage seria impreciso nesse caso. Por outro lado, isso não responde à pergunta conforme solicitado.Considere o uso de multiplexadores de terminal, como tmux ou screen.
Saiba mais sobre o tmux aqui: https://github.com/tmux/tmux/wiki
fonte
screen
e sentido que outros multiplexadores eram ainda mais exagerados. Tudo o que preciso é de um segundo console simples.screen
sua pergunta. Era tarde.