
mlgrassi
(usa Debian)
Enviado em 08/09/2016 - 13:48h
Prezados,
Tendo-se a seguinte situação:
Um processo executando via terminal que precisa ser colocado em background. A princípio é simples:
1) Pressionar CTRL + Z
2) executar o comando bg 1 (geralmente o ID do job é 1)
Até aí tudo bem, mas na prática e se ocorrer de o CTRL + Z não funcionar. No caso já aconteceu comigo uma situação onde o processo que estava sendo executado realizava operações em banco de dados (usando o comando sqlplus do Oracle, por exemplo). Ou um script em shell que realiza uma tarefa que por motivos que desconheço não puder ser interrompido pelo CTRL + Z, como proceder?
Efetuei o seguinte teste onde abri 2 sessões para um acesso ao mesmo servidor:
#### Sessão 1 ####
servidor@:/home/user $ ./script.sh
############################
#### Sessão 2 ####
servidor@:/home/user $ ps -aux | grep script.sh
Sendo o PID do processo 12345
servidor@:/home/user $ kill -20 12345
Processo foi colocado em stop
############################
Só que no caso acima se eu fechar a Sessão 1, o processo será encerrado de modo que se na sessão 2 eu executar o comando
kill -18 12345 eu não conseguirei continuar o processo na sessão 2.
A minha pergunta é: Tendo em vista os exemplos acima, como posso fazer para transferir o controle de um processo da primeira sessão para a segunda? Considerando-se que o processo está executando em tela e o objetivo é deixá-lo em background em uma segunda sessão e não na primeira.
Pois Sessão 2 desconhece o job executado por Sessão 1, logo o comando bg é inútil neste caso.
Alguém saberia me ajudar?