web-dev-qa-db-fra.com

Exécuter Python Script au démarrage du système d'exploitation

Cela pourrait être une question qui a été répétée mais je ne peux pas trouver une façon correcte de le faire.

Quel est mon cas? -> Je veux exécuter un script Python.

Que fait le script python en bref? -> Le script python s'exécute pour configurer un réseau privé virtuel.

Comment puis-je le démarrer manuellement actuellement? -> J'utilise ./file.py start (ça marche)

qu'est-ce qui ne marche pas? -> quand j'essaye de commencer au début, ça ne fait rien. J'utilise cron job qui ne fonctionne pas du tout, et je ne veux pas l'utiliser, je veux utiliser le fichier /etc/init.d/.

Ceci est mon fichier.conf dans /etc/init/xxx.conf

description "file start script"
author "sijan <[email protected]>"



exec python file.py start
exec sleep 10
exec ifconfig ip0 11.0.2.251

exec ip=`ifconfig ip0 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`

exec echo $ip >>/tmp/ip.log

J'ai ajouté le fichier python dans /etc/init.d/file.py

Je ne suis peut-être pas en train de suivre la bonne procédure pour le faire car je suis très nouveau au niveau du système, mais toute idée sur la façon de procéder est très appréciée. Je suis très désireux de résoudre ce problème et d'apprendre

5
Sijan Shrestha

Placez le script dans /etc/rc.local. Les scripts y sont exécutés en tant que root au démarrage du système. Il convient également à Raspberry Pi, comme vous l'avez spécifié dans les commentaires.

Dans votre cas, vous voulez l'exécuter en tant que python /path/to/script.py &

Voici mon exemple de fichier rc.local. J'utilise la même approche pour exécuter des scripts de surveillance de la batterie et de la température.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/preventShutdown.sh &
/home/xieerqi/bin/sh/temperature.sh  &

Informations supplémentaires sur /etc/rc.local

10
Sergiy Kolodyazhnyy

Vous pouvez aussi faire ceci avec cron en ajoutant ce qui suit à votre crontab :

@reboot username python /python/to/file.py

Vous pouvez ou peut ne pas avoir besoin du nom d'utilisateur dedans.


[MODIFIER]

Il y a deux mises en garde à cette approche:

  1. le démon cron doit être en cours d'exécution (ce qui est le cas dans des circonstances normales);
  2. le script ou le fichier crontab doit inclure les variables d'environnement (le cas échéant) qui seront nécessaires.
0
James Bradbury

Il semble que vous ayez besoin de mettre fin à la citation de chaîne après l'adresse électronique, sinon l'autre code sera considéré comme faisant partie de la chaîne d'auteur.

0
Robert Newstrand