Um trabalho parado é um que foi temporariamente colocado em segundo plano e não está mais sendo executado, mas ainda está usando recursos (por exemplo, memória do sistema). Como esse trabalho não está anexado ao terminal atual, ele não pode produzir saída e não está recebendo entrada do usuário.
Você pode ver os trabalhos em execução usando o jobs
comando builtin no bash, provavelmente outros shells. Exemplo:
user@mysystem:~$ jobs
[1] + Stopped python
user@mysystem:~$
Você pode retomar um trabalho parado usando o fg
comando interno do bash (primeiro plano). Se você tiver vários comandos que foram parados, deverá especificar qual deles deve continuar passando o número da especificação de tarefa na linha de comando fg
. Se apenas um programa for parado, você poderá usar fg
sozinho:
user@mysystem:~$ fg 1
python
Neste ponto, você está de volta ao intérprete python e pode sair usando control-D.
Por outro lado, você pode kill
executar o comando com jobspec ou PID. Por exemplo:
user@mysystem:~$ ps
PID TTY TIME CMD
16174 pts/3 00:00:00 bash
17781 pts/3 00:00:00 python
18276 pts/3 00:00:00 ps
user@mysystem:~$ kill 17781
[1]+ Killed python
user@mysystem:~$
Para usar o jobspec, preceda o número com a chave de porcentagem (%):
user@mysystem:~$ kill %1
[1]+ Terminated python
Se você emitir um comando de saída com trabalhos interrompidos, o aviso que você viu será fornecido. Os trabalhos permanecerão em execução por segurança. Isso é para garantir que você esteja ciente de que está tentando matar empregos que pode ter esquecido que parou. Na segunda vez em que você usa o comando exit, os trabalhos são finalizados e o shell é encerrado. Isso pode causar problemas para alguns programas que não devem ser mortos dessa maneira.
No bash, parece que você pode usar o logout
comando que matará os processos interrompidos e sairá. Isso pode causar resultados indesejados.
Observe também que alguns programas podem não ser encerrados quando finalizados dessa maneira, e seu sistema pode acabar com muitos processos órfãos usando recursos, se você costuma fazer isso.
Observe que você pode criar um processo em segundo plano que será interrompido se eles exigirem entrada do usuário:
user@mysystem:~$ python &
[1] 19028
user@mysystem:~$ jobs
[1]+ Stopped python
Você pode retomar e matar esses trabalhos da mesma maneira que executou os trabalhos que parou com a Ctrl-z
interrupção.