GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je faire fonctionner mon serveur Web Golang en arrière-plan ?

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.


Linux
  1. Ssh - Comment faire pour qu'un processus que je démarre pendant une session Ssh s'exécute après la fin de la session ??

  2. Linux - Comment obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

  3. Comment installer le serveur Web Apache sur Ubuntu

  4. Comment exécuter le processus Rsync en arrière-plan

  5. Comment obtenir l'ID de processus du processus d'arrière-plan ?

Comment obtenir les meilleures performances du serveur Nginx

Comment exécuter différentes versions de PHP sur le même serveur

Comment installer la plateforme d'analyse Web Matomo sur Ubuntu Server 20.04

Comment envoyer des processus en arrière-plan sous Linux

Comment obtenir uniquement l'utilisateur, le pid et la commande exécutée pour un processus spécifique ? (Ubuntu 11.10)

Comment exécuter une commande en arrière-plan avec un délai ?