Como parar de executar dois programas simultaneamente no RPi

1

Eu tenho dois RPIs ativos. Ambos têm o script: adxl345test.py

Este script coleta dados de um acelerômetro. Eu normalmente inicio o script em um RPi e inicio o script no outro RPi. Eu corro os scripts dos dois RPIs em um RPi. De modo que um RPi comece a executar seu próprio script e um script externo do outro RPi.

Eu disparo os scripts em cada RPi escrevendo sudo python adxl345test.py no console e pressionando Enter. Os relógios são sincronizados com o PTPd. Os RPi estão em rede.

Eu corro ambos os scripts através de um comando. Aqui está:

pi@Sensor1:~ $ sudo python adxl345test.py & sshpass -p 'password' ssh pi@ip sudo python adxl345test.py

Usando sshpass ( sudo apt-get install sshpass ) eu consegui digitar a senha diretamente no comando.

Agora quero parar de gravar dados! Normalmente eu usaria Ctrl + C mas isso só funciona quando rodando um único script em um RPi.

O que estou procurando é parar os scripts escrevendo um único comando no console de um RPi. A precisão não é tão importante no momento.

Eu estava pensando em usar o seguinte comando:

sudo killall python & sshpass -p 'password' ssh pi@ip sudo killall python --- OBRAS editadas!

Este comando impede que o RPi colete dados. Em um RPi, tudo está bem e os dados são registrados corretamente, no entanto, no outro RPi, por algum motivo, não registra nenhum dado, mesmo que fosse necessário.

Eu quero impedir que os dois RPIs colecionem dados após x segundos.

Acontece que o script que eu estava executando não tinha uma definição importante. Então agora o comando killall mencionado acima funciona e os dados também são mantidos adequadamente.

    
por user75374 04.12.2017 / 15:47

1 resposta

0

Primeiro, você pode usar a autenticação de chave pública SSH para executar seu comando em um RPI remoto, é muito confortável. Você pode fazer isso com um simples ssh-copy-id pi@ip do seu RPI mestre (Sensor1), eu posso te ajudar nos comentários se você quiser configurar isso.

Você pode usar o 'tempo limite' para executar seu script por um tempo definido, conforme explicado aqui .

Sobre o seu killall, você tem certeza de que o processo foi executado? Tente pegar o PID do processo com pgrep -f adxl345test.py depois de lançar seu script e veja se um pid é retornado, então mate-o com kill <PID> e veja se você consegue seus dados.

    
por 04.12.2017 / 16:01