J'essaie d'écrire quelques services. Certains d'entre eux ont l'option 'type' définie sur oneshot. Mais je suis toujours confus lorsque l'option "RemainAfterExit" doit être définie sur true. (pas seulement que le service doit être actif même après avoir quitté).
Utilisation RemainAfterExit=yes
pour les services, qui changent en quelque sorte l'état du système. Lorsque vous voulez que cet état revienne, vous arrêtez simplement le service. Ensuite, vous pouvez le redémarrer, mais pas sans l'avoir d'abord arrêté. Un exemple serait un service qui crée un indicateur dans le système de fichiers à utiliser par une autre application. Au démarrage, il crée le fichier d'indicateur, puis existe, mais le service est conservé comme actif par systemd. Ensuite, vous pouvez l'arrêter et il supprimera le fichier indicateur.
Utilisation RemainAfterExit=no
pour les services, qui effectuent certaines actions, mais ne modifient pas l'état du système. Un exemple serait un service de nettoyage /tmp
. Vous le démarrez, il fera son travail puis sera inactif (pas besoin de l'arrêter). Et vous pouvez le redémarrer à tout moment et reprendre son travail (nettoyage).
De Systemd page ci-dessous est la description de RemainAfterExit
RemainAfterExit = Prend une valeur booléenne qui spécifie si le service doit être considéré comme actif même lorsque tous ses processus sont sortis. Par défaut à no.
Cela signifie simplement que si tous vos processus ont démarré à partir des sorties de service, lorsque vous interrogez le statut du service, son indique toujours actif si cet indicateur est défini sur true. S'il est défini sur false, l'état du service est inactif.
Cela est particulièrement utile lorsque vous ajoutez une dépendance aux services lors du démarrage. où l'état du service est important pour démarrer les services dépendants.
Le drapeau est utile pour votre propre comptabilité et comptabilité. S'il vous est utile de considérer le service comme actif une fois terminé, vous pouvez définir l'indicateur.