Executando scripts independentemente no Raspberry Pi

1

Eu tenho um par de programas python, como um que verifica se a conjectura Collatz é aplicável para um determinado número ou não, e grava a saída para um arquivo (ele é executado em um Raspberry Pi).

Embora eu saiba que não foi refutado por até um quatrilhão ou algo assim, eu só quero executá-lo para a prática de programação. Embora eu possa configurá-lo para iniciar quando o RPi inicializa, e iniciá-lo através de uma sessão ssh, a principal razão pela qual estou usando um Pi é que ele pode subir para números como 1 bilhão, sem consumir muita energia mesmo se o desempenho não é prático.

Quando eu inicio através de uma sessão SSH digitando python col.py , ele para de funcionar se eu terminar a sessão. Como posso iniciar o script usando SSH para que ele não pare quando eu termino a sessão (continua até que termine ou o RPi seja desligado)?

    
por poiasd 31.01.2015 / 06:11

2 respostas

1

Existem algumas maneiras de fazer isso, na verdade.

A primeira pergunta que faço é: "Preciso ver / interagir com essa tarefa mais tarde?"

Se sim, usaria a tela ou tmux - Este é um exemplo dele com htop - ctrl a - d desanexa uma sessão de tela e screen -r reconecta. Uma sessão de tela desanexada funciona mesmo depois de você ter fechado o terminal, mas eu estava com preguiça de fazer isso aqui.

Senão eu usaria nohup python col.py & para executar a tarefa em segundo plano.

    
por 31.01.2015 / 06:32
5

Usar screen é bom, mas nohup com & também deve funcionar.

Portanto, no seu caso, basta executar o comando assim:

nohup python col.py &

Só para você entender como cada item funciona:

  • nohup : significa "no hangup", o que significa que mesmo que sua sessão de terminal seja desconectada, o processo que está conectado ao comando nohup continuará funcionando.
  • & : Esse e comercial nesse contexto diz ao shell para executar o comando que o precede como um processo em segundo plano.

Se você fosse apenas executar isso:

nohup python col.py

O python col.py seria executado, mas não como um processo em segundo plano; seria um processo em primeiro plano bloqueando você no terminal. E se você executou isso:

python col.py &

O python col.py seria executado em segundo plano, mas o segundo em que você sair do comando python col.py terminaria.

Fazer a combinação nohup e & é o método mais simples e mais comumente usado para executar tarefas autônomas como um processo independente em segundo plano.

    
por 31.01.2015 / 06:54