O que devo fazer quando obtenho o erro 'Há trabalhos interrompidos'?

39

Eu enfrento esse tipo de situação muitas vezes.

Por exemplo, sempre que tento abrir algum arquivo em emacs com sudo rights usando:

sudo emacs tet.c &

Em vez de me pedir a senha, o Ubuntu apenas inicia emacs process sem nenhuma janela emacs ou qualquer saída no terminal (exceto para o pid) veja a imagem (se eu não usar '& amp;' então vai me pedir a senha):

Eutenhoduasperguntasrelacionadasaisso:

  1. Oquedevofazerquandoobtiveroerro"Há trabalhos interrompidos"? Como identifico todos esses trabalhos interrompidos e mato-os? Depois de limpar o terminal eu não vou ter pids desses processos parados.

  2. Por que o Ubuntu / emacs está se comportando assim? Por que não me pede a senha?

por Null pointer 09.03.2014 / 06:40

3 respostas

51

There are stopped jobs message está longe, muito longe para ser um erro. É apenas uma notificação informando que você tentou sair do shell, mas você tem um ou mais jobs / programas suspensos (no seu caso emacs que você colocou em segundo plano usando & no final do seu comando). O sistema não permite que você saia do shell e mate os trabalhos, a menos que queira. Você pode fazer algumas coisas em resposta a esta mensagem:

  • use o comando jobs para informar quais trabalhos você suspendeu
  • você pode optar por adicionar o (s) trabalho (s) em primeiro plano usando o comando fg
  • se você não se importa se o (s) trabalho (s) terminará (em), você pode simplesmente digitar exit novamente; digitar exit uma segunda vez com ou sem um comando jobs resultante resultará na finalização de todos os trabalhos suspensos.

Para responder a segunda pergunta, eu vou te dizer que não Ubuntu ou emacs se comportando assim. Esse é um comportamento normal quando você coloca um aplicativo para ser executado em segundo plano. Nesse caso, sudo está pedindo senha, mas está perguntando em segundo plano, então você não pode ver esse fato. Para vê-lo, você deve trazer de volta o trabalho em primeiro plano usando o comando fg :

radu@Radu: ~ $ sudo emacs tet.c &
[1] 7732
radu@Radu: ~ $ # now sudo emacs run in background so you can't see nothing about what's happening
radu@Radu: ~ $ fg
[sudo] password for radu:

Depois disso, você pode digitar Ctrl + Z para colocar novamente o trabalho em segundo plano, se quiser. Então você pode executar novamente o comando 'fg' para trazer de volta o trabalho em primeiro plano e assim por diante.

    
por Radu Rădeanu 09.03.2014 / 08:50
9

Você recebeu a mensagem, porque o sistema avisa sobre tarefas ativas associadas ao seu shell atual.

Você pode listar esses jobs em execução / interrompidos executando: jobs ,

Então você pode seguir um destes procedimentos:

  • mova o último trabalho para o primeiro plano por: fg ,
  • execute disown para remover esses trabalhos do seu shell atual sem eliminá-los,
  • forçar logout matando essas tarefas pressionando Ctrl + D duas vezes, da mesma forma que digitando exit / logout duas vezes,
  • mate essas tarefas manualmente executando: kill $(jobs -p) (adicione -9 for force)
  • se você os ignorar e ainda quiser matar todos os processos interrompidos, tente:

    kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')

Para responder à pergunta sobre sudo , ele não pedirá a senha, pois ela precisa ter terminal ativo para receber a senha de entrada padrão , e executando o background, o shell não espera que o comando termine, então você não tem possibilidade de interagir com o comando.

Neste caso, você tem 3 possibilidades:

  • execute o comando sem entrar em segundo plano ( & ),
  • leia a senha da entrada padrão em vez do dispositivo terminal em sudo -S , por exemplo,

    echo mypass | sudo emacs tet.c
    
  • configure o sudo para não solicitar a senha: visudo command e editando sudoers file. Veja: Ativar NOPASSWD para o usuário

por kenorb 20.02.2016 / 14:02
5

Quando você encontra o erro há trabalhos interrompidos :

  1. digite jobs - > você verá os trabalhos com status interrompido
  2. e digite exit - > você pode sair do terminal
por santhosh kumar 18.05.2016 / 09:08