Exécuter Python en arrière-plan sur OS X
Est-il possible de garder mon script Python (avec une infinie", alors que " la boucle) en cours d'exécution en arrière-plan sur OS X? Aussi, pour le même but, est-il possible d'avoir "autorun" script python sur une clé USB?
source d'informationauteur tkbx
Vous devez vous connecter pour publier un commentaire.
Si vous voulez avoir le script qui s'exécute comme un processus démon qui démarre automatiquement, vous pouvez utiliser launchctl et un fichier plist.
Par exemple, Bob est un simple script python qui écrit le mot " foo " dans un fichier à chaque seconde dans son répertoire d'accueil:
Pour l'exécuter en tant que démon, créer un fichier plist,
~/Library/LaunchAgents/com.bobbob.osx.test.plist
avec le contenu:Ensuite utiliser
launchctl
pour charger le fichier plist à partir d'un terminal:Cela va charger le script et le lancer immédiatement le programme dans le
<string>
élément sous<key>Program</key>
. Vous pouvez également spécifier des arguments pour le programme à l'aide d'un<ProgramArguments>
nœud avec un tableau de<string>
éléments. Pour plus d'informations, voir la launchd.plist page de manSi vous souhaitez supprimer le script, vous pouvez utiliser la commande de déchargement de
launchctl
:L'Étiquette utilisée dans le script peut être rien, mais il doit être unique sur votre système, de sorte que Apple utilise généralement une inversion de nom de domaine.
Comme pour autorunning un script, je ne pense pas qu'il y a moyen de le faire.
Le voir, cette question des moyens de daemonizing scripts python sur les systèmes Unix:
Python Démon De L'Emballage Des Meilleures Pratiques
Bien sûr, vous pouvez toujours exécuter le script en arrière-plan, comme mentionné par kindall si c'est tout ce dont vous avez besoin.
Il suffit d'exécuter votre script Python à l'arrière-plan à l'aide de la coquille de la manière habituelle:
Comme pour le lancement automatique de question, ce serait un énorme trou de sécurité si c'était quelque chose que Mac OS X n'a par défaut, donc, non, bien sûr que non. Mais vous pouvez facilement écrire un script mis en place quelque chose comme ça sur le but: périodiquement recherchez un disque USB branché, et de faire quelque chose (même exécuter un autre script à partir de la clé usb) quand il est branché.
J'ai essayé
launchctl
et je ne pouvais pas le faire fonctionner dans El Capitan et cherché un peu plus et trouvé ce postTL;DR
Utiliser la ligne shebang
#!/usr/bin/env python
ou#!/path/to/python
sur votre scriptVous pouvez utiliser nohup
https://linux.die.net/man/1/nohup
Cela permettra d'exécuter vos processus et ajouter la sortie vers un fichier nohup.dans le même répertoire.
& exécuter le script dans le fond comme expliqué par d'autres réponses.