Autostarting um script python sempre que ele falha

0

Eu estou tentando autostart um script python toda vez que ele cai no meu pi framboesa. Estou aderindo à solução de script shell oferecida aqui: link

No diretório raiz, criei um script de shell com sudo nano constantrun.sh .

O conteúdo deste script de shell é atualmente (depois de levar em conta as mudanças oferecidas nos comentários e respostas):

#!/bin/sh

COMMAND='python home/pi/projects/mypythonscript.py'
LOGFILE=restart.txt

writelog() {
  now='date'
  echo "$now $*" >> $LOGFILE
}

writelog "Starting"
while true ; do
  $COMMAND
  writelog "Exited with status $?"
  writelog "Restarting"
done

Eu então executei sudo chmod +x constantrun.sh para torná-lo executável.

Depois disso, eu corri o script com sudo sh constantrun.sh com sucesso.

O script agora pode ser inicializado. No entanto, como meu script python usa um módulo mysqlconnector, o erro que recebo agora é: Traceback (most recent call last): File "mypythonscript.py", line 8, in <module> import mysql.connector as mariadb ImportError: No module named mysql.connector

Usando um explorador de arquivos, parece que o mysql.connnector é encontrado instalado em home/pi/.local/lib/python2.7/site-packages/mysql_connector-‌​‌​2.1.6.dist-info

Como posso resolver esse erro?

    
por Craver2000 25.12.2017 / 02:08

2 respostas

0

O problema de executar o shell script foi resolvido agora, graças à entrada de quem comentou / respondeu na minha consulta. A principal entre as sugestões úteis foi a sugestão da Fox de usar uma cotação na minha linha de comando do shell script e a recomendação para reinstalar o módulo exigido pelo meu script python globalmente.

Em resumo, meu script de shell diz:

#!/bin/sh

COMMAND='python home/pi/projects/mypythonscript.py'
LOGFILE=restart.txt

writelog() {
  now='date'
  echo "$now $*" >> $LOGFILE
}

writelog "Starting"
while true ; do
  $COMMAND
  writelog "Exited with status $?"
  writelog "Restarting"
done

Eu então executei sudo chmod +x constantrun.sh para torná-lo executável. Depois disso, eu corri o script com sudo sh constantrun.sh

Encontrei um erro de módulo de importação: ImportError: No module named mysql.connector

Isso foi resolvido fazendo uma desinstalação do pip do mysql.connector. Eu então continuei com uma instalação global do mysql.connector com sudo pip install mysql-connector-python . Meu shell script poderia então ser lançado com sucesso com sudo sh constantrun.sh .

No entanto, embora esteja funcionando atualmente, não tenho certeza se esse método pode realmente ajudar, a longo prazo, a reiniciar o script automaticamente se ele falhar. Vou monitorar mais para ver se esse método funciona.

    
por 26.12.2017 / 03:07
0

Você não tem x permission (para execução) no seu mypythonscript.py . Você precisa usar chmod para isso:

chmod +x /home/pi/projects/mypythonscript.py

Além disso, você pode precisar de um shebang para o seu script python, por exemplo:

#!/usr/bin/python3

    
por 25.12.2017 / 02:40