Um trabalho interrompido é aquele que foi colocado temporariamente em segundo plano e não está mais em execução, mas ainda está usando recursos (por exemplo, memória do sistema). Como esse trabalho não está conectado 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 comando jobs
builtin no bash, provavelmente outros shells também. Exemplo:
user@mysystem:~$ jobs
[1] + Stopped python
user@mysystem:~$
Você pode retomar um trabalho interrompido usando o comando interno bash fg
(foreground). Se você tiver vários comandos que foram interrompidos, deverá especificar qual deles deverá ser retomado, passando o número de jobspec na linha de comando com fg
. Se apenas um programa for interrompido, você poderá usar fg
sozinho:
user@mysystem:~$ fg 1
python
Neste ponto, você está de volta ao interpretador python e pode sair usando o controle-D.
Por outro lado, você pode kill
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 percentual (%):
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 serão deixados em funcionamento por segurança. Isso é para ter certeza de que você está ciente de que está tentando matar os trabalhos que você pode ter esquecido que parou. Na segunda vez 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 comando logout
que matará os processos parados e sairá. Isso pode causar resultados indesejados.
Observe também que alguns programas podem não sair quando terminados dessa maneira, e seu sistema pode acabar com muitos processos órfãos usando recursos se você tiver o hábito de fazer isso.
Observe que você pode criar um processo em segundo plano que será interrompido se precisar de entrada do usuário:
user@mysystem:~$ python &
[1] 19028
user@mysystem:~$ jobs
[1]+ Stopped python
Você pode continuar e eliminar esses trabalhos da mesma forma que os trabalhos que parou com a Ctrl-z