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)
}