o que você precisa fazer é:
nohup ./path_to_your_script.sh &
uma vez que você faça isso, você pode sair, fechar o terminal, qualquer coisa e seu script continuará rodando até que o servidor seja reiniciado ou você mate o processo
Como eu poderia dizer ao meu servidor web (Webfaction) para apenas executar um arquivo python e deixá-lo continuar funcionando para sempre? Alguém me disse que eu deveria usar cron
, mas não encontrei nenhum material bom sobre como executá-lo uma vez e não parar.
Pelo que entendi, você quer manter seu processo em execução após fechar o ssh. Você poderia usar screen
.
A maneira mais fácil é usar algo como nohup para tornar o processo um daemon:
Correndo na tela é bom para o teste, mas em algum momento ele vai quebrar por uma razão ou outra (WebFaction gosta de matar processos quando você usa muita memória) se então você precisa para reiniciá-lo automaticamente. / p>
A Supervisord ( link ) é muito boa para executar as coisas e reiniciá-las se elas falharem por qualquer motivo. Ele também lida com processos de "daemonizing", que é o que é chamado quando você desanexar um processo do terminal atual para que ele continue executando depois de ter concluído a temporada (quando você efetua logoff do SSH), é possível escrever código em seu script Python para fazer isso sozinho, mas por que se incomodar quando existem ferramentas incríveis como o Supervisord?
É claro que há sempre a possibilidade de que o Supervisord morra (ou seja morto). É aqui que você pode usar o Cron. Cron permite que você execute algo periodicamente. Uma boa propriedade da maneira como o Supervisord é normalmente configurado é que, se você tentar iniciá-lo enquanto ele estiver em execução, ele não iniciará uma segunda vez, então se você configurar uma tarefa Cron para iniciar o Supervisord a cada 5 minutos, você deve estar ok.
O método de melhor prática para algo assim é:
1) Escreva o script de forma que primeiro verifique um arquivo de bloqueio para garantir que não haja outras cópias em execução e / ou verifique se o processo ainda não está em execução.
2) Coloque uma entrada no cron para iniciar o script de vez em quando, digamos uma vez por hora.
3) Seu script pode usar um loop while (1) para continuar rodando "para sempre". No entanto, é melhor nunca ter um script executado para sempre, pois você pode ter vazamentos de memória em potencial que se acumulam durante um longo período e, eventualmente, fazer com que o sistema seja trocado e, então, você tem um sistema realmente lento. Faça isso para milhares de iterações ou se mate depois de um certo tempo. Cron vai começar de novo no próximo timeslot.
4) Registre sua saída usando > > redirecionar para um arquivo de log para que você possa capturar qualquer mensagem que você queira gerar para status.
Tags cron python web-server