Deixar o script bash em execução no terminal remoto enquanto não estiver conectado?

14

Eu tenho um script bash que leva várias horas para ser executado. Enquanto estiver em execução, eu gostaria de fazer outras coisas, que podem envolver sair ou desconectar da Internet (meu script executa testes de rede em vários computadores).

Entendo que existe um comando que me permitiria executar meus testes em um terminal remoto e efetuar logout do terminal enquanto ele é executado. Alguém sabe o que é esse comando?

Ritwik Bose
fonte

Respostas:

17

O comando que você está procurando é nohup.

Também existe screen, que é para quando você deseja deixar algo em execução, mas volte e reconecte de forma interativa mais tarde.

nohupé mais simples se um comando não espera entrada do usuário após o lançamento e screené melhor se você deseja executar o programa interativamente.

Justin Smith
fonte
Eu olhei para o nohup agora e, aparentemente, há problemas de entrada e saída que podem causar a interrupção do script. Eu também vi algo sobre a tela, que me parece o que eu tinha lido antes. Você sabe como usar um desses?
Ritwik Bose
1
nohup é para quando um script não espera entrada do usuário - ele salva toda a saída em um arquivo. A tela é para quando você deseja deixar algo em execução, mas volte e reconecte de forma interativa mais tarde. nohup é mais simples se um comando não espera entrada do usuário após o lançamento e a tela é melhor se você deseja executar o programa de maneira interativa.
Justin Smith
Eu encontrei. Para tela, é ctrl-A d para desanexar e -r + pid para recolocar.
Ritwik Bose
Boa resposta. Você deve adicionar o comentário na tela para responder, para que ele se destaque mais.
21410 DaveParillo
1

Eu uso nohuppara isso. No meu caso, eu tinha um script python chamado action.py Executei o script em um servidor remoto nohup python action.py & , e depois fechei o terminal. Mais tarde, quando terminar a execução, você poderá ver toda a saída do processo em nohup.outque será criada no mesmo diretório que action.py. Se o arquivo já existir, uma saída adicional será anexada a ele.

O único problema é não saber quando o script terminou, então, no meu caso, mandei um email para mim após a conclusão. Espero que isso tenha ajudado alguém!

Bryan J
fonte
0

O que acontece se você se esqueceu de adicionar o nohupcomando no início do seu comando?

Digamos que você executou o seguinte comando longo:

O início da saída de um comando longo

Isso é chamado, pois ls -Ral /deve listar todos os arquivos e todas as pastas, incluindo as ocultas, com um formato longo, iniciando recursivamente a partir da pasta raiz. Pode demorar um pouco.

Basta pressionar ctrl+ Z.

Parando o comando longo

Como você recupera isso?

O comando para recuperá-lo de novo é fg.

Trazendo o comando de volta


fonte