2017-10-11 4 views
1

J'ai créé un service systemd de la même manière que toute interruption déclenchée par le processus en cours, puis il doit redémarrer lui-même. mais service affiche son statut en cours d'exécution (Systemctl status x.service utilisé) même après la fin du processus (qui est mentionné dans exec_start). Ci-dessous mon script de serviceL'état du service Systemd reste actif même après que le processus ExecStart ne soit pas présent dans les centos. 7.3

{

[Unit] 
Description=xserverd 
After=syslog.target rsyslog-x.service systemd-modules-load.service 
Requires=rsyslog-x.service systemd-modules-load.service 
[Service] 
Type=forking 
ExecStart=/opt/bin/xserver 
Restart=always 
RestartSec=2s 
RemainAfterExit=no 
RestartPreventExitStatus=SIGINT 
KillMode=process 
TimeoutSec=300s 
[Install] 
WantedBy=multi-user.target 

}

/opt/bin/xserver est un exécutable C qui 777 la permission. gestionnaire de signal ajouté pour SIGINT et SIGSEGV. SIGINT est de dire la sortie correcte de l'utilisateur. SIGSEGV pour consigner backtrace dans notre fichier journal personnalisé. chaque fois que ces processus reçoit des signaux qu'il sortira avec { exit(EXIT_FAILURE) }

Répondre

0

Pour Type=forking, systemd prendre l'enfant ou de l'enfant de l'enfant de la commande de démarrage est le processus démon.

Changez-le en simple si votre démon ne fonctionne pas de cette façon.