Page 1 sur 1

[systemd] : problème de configuration de service (résolu)

Publié : mar. 02 août 2016, 10:40
par cyril.m.85
Bonjour,

Depuis une mise à jour de systemd que j'ai installé hier, un service pour lequel j'avais écrit le fichier de configuration il y a quelques mois n'est plus administrable via la commande systemctl (il s'agit d'un serveur Minecraft). Voici le fichier de conf, je m'étais appuyé sur un exemple trouvé sur Internet, que j'avais adapté comme j'avais pu mais qui n'est peut-être pas propre :

Code : Tout sélectionner

[Unit]
Description=Minecraft Server
Documentation=

Wants=network.target
After=network.target

[Service]
User=minecraft
Group=minecraft
Nice=5
EnvironmentFile=-/var/minecraft/unit.conf
KillMode=none
SuccessExitStatus=1 0

ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
PrivateTmp=true
InaccessibleDirectories=/root /sys /srv -/opt /media -/lost+found
ReadWriteDirectories=/var/minecraft/server
WorkingDirectory=/var/minecraft/server
ExecStart=/usr/bin/java -Xmx1536M -Xms1536M -jar spigot.jar --noconsole
ExecStop=/usr/bin/mcrcon -H localhost -P xxxxx -p xxxxx stop

[Install]
WantedBy=multi-user.target
Ce service fonctionnait parfaitement depuis quelques mois, et depuis la mise à jour d'hier je rencontre ces erreurs :

Code : Tout sélectionner

[cyril@vps261719 system]$ sudo systemctl status minecraft
● minecraft.service - Minecraft Server
   Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since mar. 2016-08-02 10:30:40 CEST; 59s ago
  Process: 2751 ExecStop=/usr/bin/mcrcon -H localhost -P xxxxx -p xxxxxx stop (code=exited, status=226/NAMESPACE)
  Process: 2749 ExecStart=/usr/bin/java -Xmx1536M -Xms1536M -jar spigot.jar --noconsole (code=exited, status=226/NAMESPACE)
 Main PID: 2749 (code=exited, status=226/NAMESPACE)

août 02 10:30:40 vps261719.ovh.net systemd[1]: Started Minecraft Server.
août 02 10:30:40 vps261719.ovh.net systemd[1]: minecraft.service: Main process exited, code=exited, status=226/NAMESPACE
août 02 10:30:40 vps261719.ovh.net systemd[2751]: minecraft.service: Failed at step NAMESPACE spawning /usr/bin/mcrcon: No such file or directory
août 02 10:30:40 vps261719.ovh.net systemd[1]: minecraft.service: Control process exited, code=exited status=226
août 02 10:30:40 vps261719.ovh.net systemd[1]: minecraft.service: Unit entered failed state.
août 02 10:30:40 vps261719.ovh.net systemd[1]: minecraft.service: Failed with result 'exit-code'.
J'ai essayé de remplacer le lien symbolique /usr/bin/java par le chemin ciblé mais cela ne fonctionne pas mieux.
Mon paquet systemd est en version 231-1.

Merci pour votre aide.

Re: [systemd] : problème de configuration de service

Publié : mar. 02 août 2016, 13:53
par oktoberfest
Salut,

on va déjà commencer par résoudre un premier problème :

Code : Tout sélectionner

août 02 10:30:40 vps261719.ovh.net systemd[2751]: minecraft.service: Failed at step NAMESPACE spawning /usr/bin/mcrcon: No such file or directory
Il te manque donc mcrcon, disponible sur AUR.

Question subsidiaire : si le contenu de ta ligne ExecStart, tu la lances dans un shell, est-ce que tout se déroule bien ?

Re: [systemd] : problème de configuration de service

Publié : mar. 02 août 2016, 14:24
par benjarobin
Supprime temporairement l'option InaccessibleDirectories et essaye. Si cela marche, il faudra creuser de ce coté. Il faut savoir que cette option a été renommé, elle n'est plus documentée sous ce nom

Re: [systemd] : problème de configuration de service

Publié : mar. 02 août 2016, 15:33
par cyril.m.85
Merci à vous deux pour votre aide.

mcrcon est bien présent et opérationnel (installé depuis AUR il y a plusieurs mois, pas de problème jusqu'ici) :

Code : Tout sélectionner

[cyril@vps261719 ~]$ which mcrcon
/usr/bin/mcrcon
[cyril@vps261719 ~]$ mcrcon list
There are 0/5 players online:
(n.b : la commande mcrcon ne fonctionne pas ainsi, je me suis fait un alias pour me simplifier l'utilisation)

Ma ligne de commande ExecStart s'exécute correctement lorsque je la lance manuellement depuis un terminal :

Code : Tout sélectionner

[minecraft@vps261719 server]$ /usr/bin/java -Xmx1536M -Xms1536M -jar spigot.jar --noconsole
Loading libraries, please wait...
[15:11:37 INFO]: Starting minecraft server version 1.10
[15:11:37 INFO]: Loading properties
...
[15:11:45 INFO]: Done (7,486s)! For help, type "help" or "?"
[15:11:45 INFO]: Starting remote control listener
[15:11:45 INFO]: RCON running on 0.0.0.0:25575
Ma ligne ExecStop s'exécute correctement aussi :

Code : Tout sélectionner

[cyril@vps261719 ~]$ /usr/bin/mcrcon -H localhost -P xxxxx -p xxxxxx stop
Stopping the server
Après avoir commenté l'option InaccessibleDirectories, le service est de nouveau administrable sans problème : les commandes d'arrêt, de démarrage fonctionnent de nouveau. Ouf !
Maintenant je ne mesure pas vraiment l'impact de ne plus utiliser cette option, je suppose que cela peut présenter une faille de sécurité, je vais essayer de me documenter sur la nouvelle façon de l'utiliser mais en attendant grâce à vous je peux remettre mon serveur en ligne.