Durante anos, quando trabalhei em uma conexão SSH, executarei sudo vi ...
para editar um arquivo de configuração. Se eu precisar fazer algo na linha de comando, pressiono Ctrl + Z para suspender o editor, fazer as coisas, então fg
para voltar a ele.
Mas isso não está mais funcionando como esperado (como no Ubuntu 14.04, tanto quanto eu posso dizer). O editor fica suspenso muito bem, mas a primeira vez que tento retomar é como se nada acontecesse (ou talvez ele recomeça momentaneamente, mas depois suspende novamente). Se eu tentar fg
uma segunda vez, o editor parece retomar, mas todas as teclas que eu pressionar são apenas ecoadas para o console. Mas pressionar Ctrl + Z neste ponto suspende e me retorna ao shell.
Eu não consigo descobrir como recuperar o controle do editor. Eu geralmente tenho que apenas sudo kill
pelo ID do processo ( kill %1
retorna "operação não permitida", como seria de se esperar, pois o editor está sendo executado como root).
Por favor, não sugira usar screen
e / ou terminais separados, pois eu já faço isso. Eu gostaria de saber se existe uma solução para esse problema específico, já que apertar Ctrl + Z é um hábito tão profundo que eu continuo fazendo isso sem pensar nisso. O Ubuntu mudou recentemente algum modelo de segurança?
Atualizar
Ainda não descobri esse problema, mas acho que tem algo a ver com a suspensão de processos aninhados. Não tenho certeza se é específico para o sudo. Eu não consegui reproduzi-lo de forma confiável, mas esta é a sequência que mais causa isso:
sudo vi
filename
vi
another-filename
fg 1
para tentar retomar o vi como root. Neste ponto, o shell simplesmente dirá [1]+ Stopped sudo vi filename
. Tentando fg 1
novamente aparecerá para retomar o vi, mas qualquer keystrokes simplesmente será ecoado para o console. O que parece estar acontecendo é que, quando eu suspendo o sudo vi
, os processos sudo
e vi
são interrompidos. Quando eu fg
na primeira vez, somente sudo
é retomado. Quando eu fg
na segunda vez, sudo
é interrompido, mas vi
é retomado. Em circunstâncias normais, ambos os processos devem ser retomados.