web-dev-qa-db-fra.com

Comment exécuter un programme en tant que service (silencieux)?

J'ai un serveur basé sur python que je lance à partir du terminal. Cette instance particulière du terminal donne alors le contrôle au programme, qui 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 en le montrant comme un processus actif? Si je ferme le terminal à partir duquel j'ai démarré le programme, le programme meurt avec.

Je vous remercie

22
U2ros

Même le vieux bash utilise & pour envoyer les processus en arrière-plan, mais il y a peu d'autres moyens aussi .. mais voici les deux bases:

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

Quelques autres commandes utiles:

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window
8
lukassos

Transformez-le en démon (service)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh

27
user91632
$ servicename &

L'utilisation de & provoque l'exécution du programme en arrière-plan, au lieu de bloquer le shell jusqu'à la fin du programme.

6
dixoncx

Vous pouvez aussi utiliser:

start-stop-daemon -SbCv -x your_command

voici script init.d pour démarrer et arrêter un programme en arrière-plan.

1
druss

À partir du terminal, vous pouvez également exécuter screen ou suivre votre commande avec &. Un moyen facile d'exécuter des processus continus.

0
Nicholas Porter