Je viens de mettre à niveau la version 15 du serveur Ubuntu 14 vers la version 15. J'ai eu du mal à faire fonctionner mon script d'installation après la mise à niveau et j'ai lu que systemd était la nouvelle valeur par défaut. Je suis loin d'être un expert linux, alors allez-y doucement sur moi :-)
Voici ce que mon script parvenu était avant:
description "NZBGet upstart script"
setuid robert
setgid robert
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
exec nzbget -D
end script
pre-stop script
exec nzbget -Q
end script
Sur la base de la page de wiki de updart to systemd , j’ai utilisé les tables fournies pour mapper le plus fidèlement possible dans mon nouveau fichier de service systemd:
[Unit]
Description=NZBGet Service
[Service]
Type=forking
ExecStart=/usr/local/bin/nzbget -D
ExecStop=/usr/local/bin/nzbget -Q
Restart=on-failure
Ce fichier se trouve à l'adresse /home/robert/.config/systemd/user/nzbget.service
. Pour démarrer le service manuellement, je faisais:
$ systemctl --user start nzbget
Cela fonctionne très bien. Cependant, lorsque je me déconnecte de ma session SSH, le service s'arrête. En outre, il ne démarre pas au démarrage ou lors de la connexion de l'utilisateur. Je veux qu'il se comporte comme s'il s'agissait d'un service upstart: je veux qu'il démarre au démarrage, s'exécute constamment et en tant qu'utilisateur spécifique.
Que dois-je faire pour obtenir cette configuration?
systemctl enable
commande, ce n'était pas évident pour moi au début. Cela m'a également mis en garde contre une[Install]
section manquante . Je l'ai ignoré, mais je ne sais pas si cela affectera sa capacité à démarrer au démarrage.Install
avertissement était réellement important. Il ne commencera pas au démarrage sansWantedBy=multi-user.target
sous la[Install]
section. Après avoir ajouté ceci au.service
fichier, alors vous pouvezenable
lui.[Install]
section. J'espère que c'est maintenant plus utile pour ceux qui le cherchent.[email protected]
puisenable
que[email protected]
le paramètre devient alorsUser=%i
que l'utilisateur n'est pas codé en dur et que plusieurs utilisateurs peuvent utiliser la même définition. Un exemple./etc/systemd/user/
?Vous pourriez être intéressé par l’utilisation de la fonctionnalité "utilisateur en attente" de systemd. Il est activé via
loginctl enable-linger USERNAME
.Cela entraîne le démarrage d'un gestionnaire de services distinct pour l'utilisateur respectif au démarrage. Ainsi, vos unités définies par l'utilisateur
~/.config/systemd/user
seront récupérées et traitées aux heures de démarrage et d'arrêt en fonction de la configuration de votre service.Vous pouvez également utiliser
systemctl --user
pour gérer et configurer le (s) service (s), qui fonctionneront sur le gestionnaire de service de votre utilisateur, et non sur celui du système.la source
systemctl --user
est une découverte fantastique. Merci!systemctl --user
cela ne semble pas fonctionner pour les sessions SSH.