GNU/Linux >> Tutoriels Linux >  >> Linux

Comment redémarrer (ou réinitialiser) un processus en cours d'exécution sous Linux ?

J'ai deux systèmes Linux communiquant via des sockets (Desktop et une carte de développement basée sur ARM).

Je souhaite redémarrer (ou réinitialiser) mon application client (exécutée sur une carte de développement) lorsque le serveur envoie un message prédéfini particulier. Je ne veux pas redémarrer (redémarrer) Linux, je veux juste que l'application cliente redémarre automatiquement.

Je ne comprends pas comment cela devrait être fait.

Réponse acceptée :

La façon normale de le faire est de laisser votre programme se fermer et d'utiliser un système de surveillance pour le redémarrer. Le init programme offre un tel système de surveillance. Il existe de nombreux programmes d'initialisation différents (SysVinit, BusyBox, Systemd, etc.), avec des mécanismes de configuration complètement différents (toujours écrire un fichier de configuration, mais l'emplacement et la syntaxe du fichier diffèrent), alors consultez la documentation de celui que vous 'utilisez. Configurez init pour lancer votre programme au démarrage ou sur demande explicite, et pour le redémarrer s'il meurt. Il existe également des programmes de surveillance plus sophistiqués, mais vous ne semblez pas en avoir besoin. Cette approche présente de nombreux avantages par rapport au fait que le programme redémarre tout seul :c'est standard, vous pouvez donc redémarrer un tas de services sans avoir à vous soucier de la façon dont ils sont créés; cela fonctionne même si le programme meurt à cause d'un bogue.

Il existe un mécanisme standard pour dire à un processus de se terminer :les signaux. Envoyez à votre programme un signal TERM. Si votre programme doit effectuer un nettoyage, écrivez un gestionnaire de signal. Cela n'empêche pas d'avoir une commande spécifique au programme pour l'arrêter si vous avez un canal administratif pour lui envoyer des commandes comme celle-ci.


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

  2. Comment tuer les processus en cours d'exécution sous Linux

  3. Comment définir l'ID de processus sous Linux pour un programme spécifique

  4. Comment redémarrer le serveur MySQL distant fonctionnant sous Linux Ubuntu ?

  5. Comment puis-je créer un fichier de vidage d'un processus en cours d'exécution sous Linux ?

Comment répertorier les processus en cours d'exécution sous Linux :guide du débutant

Comment tuer un processus sous Linux

Comment savoir depuis combien de temps un processus s'exécute sous Linux

Comment trouver et tuer les processus en cours d'exécution sous Linux

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Comment tuer un processus sous Linux