O que significa uma resposta “[1] + saída 1”?

6

Eu corri este comando para tentar obter meu programa python para executar em segundo plano e me deixe sair a conexão SSH que estou usando:

nohup python files.py >> files.log &

Eu então confiro ps para verificar se funcionou

$ ps a
  PID TTY      STAT   TIME COMMAND
13059 pts/0    Ss     0:00 -bash
13327 pts/0    R+     0:00 ps a
[1]+  Exit 1                  nohup python files.py >> files.log

O que isso significa [1]+ Exit 1 ?

E como posso executar meu programa em segundo plano, deixando-me sair corretamente?

    
por ACarter 25.03.2013 / 21:53

2 respostas

9

Quando você usa o & no final de um comando no bash, ele executa o comando em segundo plano. O [1]+ Exit 1 significa que o trabalho 1 saiu com status 1. O número entre o [] é o número do trabalho e o número após Exit é o status de saída. Se nenhum status de saída for exibido, significa que o comando saiu com status 0 .

O motivo pelo qual você não vê isso até executar outro comando é porque, por padrão, o status de um comando concluído em segundo plano não é mostrado até que o prompt seja atualizado. Isso significa que depois que outro comando sair, você simplesmente pressiona <ENTER> em um prompt vazio.

Editado:
Você também não precisa usar o nohup . O Bash só processará o HUP quando o próprio shell receber um HUP. Isso não acontece se você sair corretamente (via exit ou CTRL + D). No entanto, você também pode usar o disown incorporado para que tarefas específicas não recebam um HUP.
Por fim, você também pode definir um manipulador SIGHUP para descartar todas as tarefas quando o shell obtiver um HUP fazendo function sighup { disown -a; exit 0; }; trap sighup HUP .

    
por 25.03.2013 / 22:06
3

A resposta de Patrick está correta, embora o ponto de Stéphane sobre nohup seja importante para usuários com versões diferentes. No entanto, o significado do símbolo + (mais) não foi fornecido. Aqui, indica que é o trabalho "atual". Por exemplo, se eu fosse enviar 3 comandos de uma vez como:

$ sleep 5&
[1] 29056
$ sleep 5&
[2] 29091
$ sleep 5&
[3] 29147

Depois espere 5 segundos e aperte "return", a saída é:

[1]   Done                    sleep 5
[2]-  Done                    sleep 5
[3]+  Done                    sleep 5

Como Patrick explicou, o número entre colchetes é um número de trabalho ordenado. O + é dado apenas para o trabalho mais recente e o - é dado para o trabalho que o precede. Todos os outros trabalhos não possuem notação.

    
por 19.12.2014 / 14:50

Tags