notificação após a conclusão do programa

6

Vou executar o prog.cpp no cluster Linux da minha universidade (compilado com o gcc). Eu projeto que o programa levará de 3 a 6 dias para ser concluído. Eu estava pensando em executá-lo como

./prog &

para executá-lo em segundo plano. Minhas perguntas são:

  1. É seguro fechar a janela do terminal?
  2. Como sei quando meu programa está completo? Posso fazer o GCC me notificar de alguma forma?
por covstat 30.11.2011 / 19:26

6 respostas

12

Não, ./prog & não é suficiente: o seu programa será cancelado quando a sessão terminar.

Você pode usar nohup :

nohup ./prog &

Uma opção mais flexível é usar o GNU screen .

Quanto à notificação por e-mail, eu pessoalmente escreveria um script de shell de duas linhas, a primeira linha executando ./prog no primeiro plano e a segunda linha usando mail para enviar a notificação. Em seguida, o script pode ser executado usando nohup ou dentro de uma sessão screen .

    
por 30.11.2011 / 19:29
2

Seu programa não tem nada a ver com o GCC. Ele foi compilado pelo GCC, mas você não precisa do GCC para executá-lo (e você poderia compilá-lo em outro lugar).

você pode executar

 nohup ./prog

mas sugiro usar o sistema lote (fornecido por atd thru batch ou at comandos) eg

 batch << END
  ./prog
 END

O atd dameon enviará um e-mail quando o lote for concluído. Com o comando at , você também pode dar uma hora (quando iniciar seu programa).

    
por 30.11.2011 / 19:32
1

Não, geralmente não é seguro sair da sua janela de terminal quando você tem um programa em segundo plano em execução, se você quiser que o programa em segundo plano continue.

A razão é que quando você sai do terminal, geralmente você envia um sinal ao programa (geralmente o sinal HANGUP, IIRC). Programas, por padrão, sairão quando receberem este sinal.

Como especificado em outra resposta, tente usar o programa nohup (1) ou screen (1), que permite desconectar (propositalmente ou por acidente) e reconectar mais tarde.

Quanto à notificação por email, tente algo como:

nohup sh -c 'prog; echo "all done" | mail -s results [email protected]' &
    
por 30.11.2011 / 19:33
0
  1. Não é seguro fechar a janela do terminal. Você deve emitir o comando disown , isso removerá os trabalhos ativos do prog. E o programa não será morto depois de fechar a janela do terminal.
por 30.11.2011 / 19:30
0

Se você pode iniciar seu programa com o terminal zsh e iniciá-lo com o comando background você não precisa se preocupar com o comando nohup ou disown. O Zsh é um shell de substituição para ash ou bash e possui um recurso interessante, por exemplo, cores mais agradáveis para a listagem de diretórios começar. Eu uso muito com o lighttpd e o comando background.

    
por 01.12.2011 / 05:05
-1
  1. Se o programa estiver sendo executado em segundo plano, acho que é seguro.
  2. Talvez tente ./prog && sendmail [opts, I don't now what but U can read documentation] &
por 30.11.2011 / 19:30

Tags