Gaussian, que é executado com nohup na máquina linux remota, é morto quando o computador local é desligado antes de o shell ser encerrado

4

Eu tenho um problema ao executar o Gaussian no Linux remoto via SecureCRT no Windows.

gaussiana

Gaussian gera diferentes executáveis filhos ("link"s) quando estiver em exibição. Por exemplo, eu começo Gaussian executando nohup g09 < test.in > test.out 2> test.out & , e g09 gerará link s diferentes, como l301.exe e l502.exe em circunstâncias específicas.

Executar gaussiano

Quando me conecto à caixa Linux remota e executo o Gaussian usando nohup ${Path_Of_Gaussian}/g09 < jobname.in > jobname.out 2> jobname.out & :

  1. Se eu sair do shell digitando exit e pressionando Enter , posso sair enquanto o Gaussian no Linux continua em execução (o nome do executável específico depende do tempo específico).

  2. Se eu desligar o computador (então o SecureCRT será desligado), Gaussian no Linux será morto e reclamará "desligar".

  3. Se eu sair digitando exit e pressionando Enter e, em seguida, fizer logon, posso desligar o computador e o Gaussian no Linux continuará em execução.

  4. A resposta de
  5. jlliagre não funciona neste caso.

Executar comando simples

Capture um executável simples, que não faz nada (ou seja, não lida com entrada e saída), mas dorme por 10 minutos, por exemplo. Quando eu executo por nohup ${Path_Of_Executable}/executable & :

  1. Se eu sair do shell digitando exit e pressionando Enter , posso sair e o executável continua rodando no Linux.

  2. Se eu desligar o computador (o SecureCRT será desligado), o executável executado no Linux será morto.

  3. Se eu sair digitando exit e pressionando Enter , e depois fazer logon, eu posso desligar o computador (o SecureCRT será desligado) e o executável no Linux continuará executando.

  4. Como na resposta experiente do jlliagre , se eu executar nohup ${Path_Of_Executable}/executable </dev/null >/dev/null 2>&1 & , posso desligar enquanto o executável no Linux continuar em execução.

Em outras palavras, por que o Gaussian, que é executado em uma máquina remota com nohup , é morto quando o computador local é desligado antes de o shell ser encerrado?

    
por SOUser 25.11.2013 / 22:51

2 respostas

3

Idéia # 1 - negar

Com base na maneira como você está descrevendo seu problema, parece que Guassian ainda tem algumas ligações com o shell do qual ele foi gerado.

Uma coisa adicional que você pode tentar além do nohup é executar disown -a , embora isso deva fazer a mesma coisa de desconectar todos os processos gerados de receber SIGHUP.

Idéia # 2 - envolva-a em outro Bash

Outro pensamento seria invocar Guassian assim.

  1. faça login na máquina remota
  2. nohup bash
  3. execute o Guassian neste shell secundário

Isso pode impedir que o Guassian seja encerrado quando a máquina local perder a conexão.

Idéia # 3 - use o tmux ou a tela

Eu encontrei aplicativos semelhantes a isso também, e em vez de bater muito na minha mesa, eu costumo alcançar screen e / ou tmux e executar o aplicativo no sistema remoto dentro Tela.

Isso protege melhor o processo e tem o benefício adicional de poder se reconectar com ele mais tarde.

    
por 30.11.2013 / 17:58
2

Isso deve destacar melhor sua inscrição:

nohup ${PATH_OF_APPLICATION}/app </dev/null >/dev/null 2>&1 &

Se isso ainda não funcionar por algum motivo, tente:

echo ${PATH_OF_APPLICATION}/app | at now
    
por 25.11.2013 / 23:40

Tags