Como executo um script em segundo plano e o deixo em execução quando faço logout? [duplicado]

7

Duplicata Possível:
Deixar script bash em execução no terminal remoto enquanto não estiver logado?

Eu tenho um script que roda Gaussian, uma calculadora de estrutura química, que gasta alguns dias brincando com uma molécula. Ele é executado em uma caixa do Linux que eu carrego os arquivos de entrada e disse script para, então eu (deveria) executá-lo, espere um pouco, espero que o programa não travasse e faça logon novamente para coletar o resultado.

Um novato * nx, mas não consigo descobrir como configurar o script em execução e desconectar, enquanto o deixo continuar.

./jobscript

parece bloquear até que seja feito, e se eu desligar ele termina

./jobscript &

não bloqueia, eu posso vê-lo rodando top, então eu pensei que estava tudo bem, mas ao sair, aparentemente, o programa foi cancelado.

Como faço para definir a coisa para executar e ficar em execução, mesmo se eu sair?

Nick T
fonte

Respostas:

8

Você quer usar o programa screen. Aqui está a página do homem para isso, e Aqui é um bom tutorial. Ele deve fazer exatamente o que você quer fazer - executar algo em segundo plano e poder voltar mais tarde.

charliehorse55
fonte
Parece screen é melhor para mim enquanto tropeço em um novo mundo; é bastante óbvio quando executo um script (bloqueio) e ele morre devido a algum erro de sintaxe ou entrada malformada conforme retorna imediatamente.
Nick T
8

Você pode usar:

nohup /path/to/script >output 2>&1 &
Xenoactive
fonte
2

nohup

nohup - execute um comando imune a restrições, com saída para um não-tty

- man nohup

Greg Mattes
fonte
1

Com bash:

my_program &
disown -h %1

Altere o número do seu número de trabalho real (consulte jobs embutido também)

glenn jackman
fonte