Les choses simples/utilisables d'abord
Si vous voulez un script de démarrage sans trop d'effort (c'est-à-dire gérer le processus, juste le faire gérer par le système), vous pouvez créer un systemd
service. Voir la réponse de Greg pour une description détaillée de la façon de procéder. Ensuite, vous pouvez démarrer le service avec
systemctl start myserver
Auparavant, j'aurais recommandé d'essayer xinetd
ou quelque chose de similaire pour une granularité plus fine concernant la gestion des ressources et des autorisations, mais systemd couvre déjà cela.
Utiliser le shell
Vous pouvez commencer votre processus comme ceci :
nohup ./myexecutable &
Le &
indique au shell de démarrer la commande en arrière-plan, en la gardant dans la liste des tâches. Sur certains shells, la tâche est tuée si le shell parent se termine en utilisant le signal HANGUP. Pour éviter cela, vous pouvez lancer votre commande en utilisant le nohup
commande, qui ignore le signal HANGUP.
Cependant, cela ne fonctionne pas si le processus appelé reconnecte le signal HANGUP.
Pour être vraiment sûr, vous devez supprimer le processus de la liste des tâches du shell. Pour deux shells bien connus, cela peut être réalisé comme suit :
bash :
./myexecutable &
disown <pid>
zsh :
./myexecutable &!
Tuer votre travail d'arrière-plan
Normalement, le shell imprime le PID du processus, qui peut ensuite être tué en utilisant le kill
commande, pour arrêter le serveur. Si votre shell n'imprime pas le PID, vous pouvez l'obtenir en utilisant
echo $!
directement après l'exécution. Ceci imprime le PID du processus dupliqué.
Vous pouvez utiliser Supervisord pour gérer votre processus.