J'ai un serveur basé sur python que je démarre à partir du terminal. Cette instance particulière du terminal donne alors le contrôle au programme, et le programme l'utilise comme une sorte de fenêtre de journalisation, jusqu'à sa fermeture. Est-ce normal, ou devrais-je essayer de démarrer le programme d'une autre manière pour qu'il apparaisse simplement comme un processus actif? Si je ferme le terminal à partir duquel j'ai démarré le programme, le programme meurt avec lui.
Merci
command-line
python
services
U2ros
la source
la source
Réponses:
Même l'ancien bash utilise & pour envoyer des processus en arrière-plan, mais il y a aussi quelques autres façons .. mais les deux de base sont les suivantes:
Quelques autres commandes utiles:
la source
Transformez-le en démon (service)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh
la source
L'utilisation
&
entraîne l'exécution du programme en arrière-plan, au lieu de bloquer le shell jusqu'à la fin du programme.la source
dixon@dixon-vaio:~$ nautilus & [1] 11835
. Il retourne l'identifiant du processus et vous obtiendrez une nouvelle invite shell. Vérifiez également ceci: http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and .Vous pouvez aussi utiliser:
voici le script init.d pour démarrer et arrêter un programme en arrière-plan.
la source
Depuis le terminal, vous pouvez également exécuter
screen
ou suivre votre commande avec&
. Un moyen facile d'exécuter des processus continus.la source
&
, à mon avis, de simplement utiliser le processus dans ce cas. OP déclare que son serveur se connecte à stdout donc, avec&
son terminal sera encombré de sortie. De plus, étant donné que OP mentionne la fermeture du terminal , OP ne pourra plus mettre en avant le processus et toutes les sorties de journal seront perdues. Mieux, au moins, pour le rediriger vers un fichier journal ou s'en tenir à lascreen
configuration - mais alors expliquez les bases descreen
OP (detach / attach / etc)