web-dev-qa-db-fra.com

Linux Comment exécuter python Script au démarrage

Linux ubuntu 14.04 avoir un script dans ~/app/serve.py

Besoin de l'exécuter dans ce dossier. En shell je peux faire

> cd ~/app && python serve.py

et il exécute un serveur

Besoin de l'exécuter sur les serveurs démarrer en arrière-plan. Essayé d'ajouter cette commande cd ~/app && python serve.py ~ Inc/rc.local (et etc/init.d/rc.local) mais cela ne démarre pas.

Qu'est-ce que je fais mal?

5
WHITECOLOR

Au lieu d'ajouter cd ~/app && python serve.py Dans /etc/rc.local, essayez de mettre dans l'ensemble du chemin. Vous vous attendez à ce que le processus init sache que votre annuaire de maison est en quelque sorte, mais init commence en tant que root. Parce que Init commence en tant que root, il cherche dans / Pour le répertoire d'applications, pas votre annuaire de domicile. Débarrassez-vous de l'~ en utilisant le chemin de votre répertoire personnel.

Essayez d'ajouter /home/whitecolor/app/serve.py à /etc/rc.local. (pwd _ pour trouver votre répertoire de chemin.) Démarrez le débarras python devant votre script serve.py en ajoutant #!/usr/bin/python En haut de votre script. (type A which python Pour trouver le chemin au cas où il n'est pas installé dans la place normale)

Edit: Vous avez dit "courir à l'arrière-plan" et cela m'a raté. Pour exécuter une commande en arrière-plan, ajoutez un & après la commande. Donc, à l'arrière-plan que commander ci-dessus: /home/whitecolor/app/serve.py & Init n'a généralement pas besoin du symbole d'arrière-plan pour lancer un travail et l'exécuter à l'arrière-plan.

L'excellente suggestion de DRTR n'aurait pas besoin de la même chose & Traitement après la commande dans le démarrage de cron, car ceux-ci sont exécutés dans l'arrière-plan par défaut.

5
ScotT

Je n'ai jamais eu la nécessité d'essayer cela, mais apparemment des scripts peuvent être exécutés au démarrage du système via Cron en ajoutant une ligne similaire à celle du début avec @reboot ci-dessous.

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

Remarque, j'ai légèrement modifié la commande pour éliminer CD'ing dans le répertoire. Votre situation peut être différente, alors faites ce qui fonctionne pour vous.

4
DrDR