web-dev-qa-db-fra.com

Comment déboguer un service systemctl ayant échoué (code = quitté, statut = 217 / USER)?

J'essaie d'ajouter mon premier service sur rhel7 (qui réside dans AWS/EC2), mais - le service n'est pas configuré correctement - comme j'obtiens:

[ec2-user@ip-172-30-1-96 ~]$ systemctl status clouddirectd.service -l
● clouddirectd.service - CloudDirect Daemon
   Loaded: loaded (/usr/lib/systemd/system/clouddirectd.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: exit-code) since Tue 2018-01-09 16:09:42 EST; 8s ago
 Main PID: 10064 (code=exited, status=217/USER)

Jan 09 16:09:42 ip-172-30-1-96.us-west-1.compute.internal systemd[1]: clouddirectd.service: main process exited, code=exited, status=217/USER
Jan 09 16:09:42 ip-172-30-1-96.us-west-1.compute.internal systemd[1]: Unit clouddirectd.service entered failed state.
Jan 09 16:09:42 ip-172-30-1-96.us-west-1.compute.internal systemd[1]: clouddirectd.service failed.

Aussi:

[ec2-user@ip-172-30-1-96 ~]$ systemctl is-active clouddirectd
activating
[ec2-user@ip-172-30-1-96 ~]$ Sudo systemctl list-units --type service --all | grep clouddirectd
  clouddirectd.service                                  loaded    activating auto-restart CloudDirect Daemon

Et mon fichier d'unité est:

[ec2-user@ip-172-30-1-96 ~]$ cat /usr/lib/systemd/system/clouddirectd.service
[Unit]
Description=CloudDirect Daemon
After=network.target

[Service]
Environment=AWS_SHARED_CREDENTIALS_FILE=/etc/sonar/.aws/credentials
#ExecStart=/usr/lib/sonar/clouddirect/virtualenv/bin/python /usr/bin/sonar/clouddirectd -c /etc/sonar/clouddirect/clouddirectd.conf
ExecStart=/usr/lib/sonar/clouddirect/virtualenv/bin/python /usr/bin/clouddirect -c /etc/sonar/clouddirect.conf
# @PERM@ allow group write permission on newly created files
UMask=0007
#User=clouddirectd
User=clouddirect
Group=sonar
KillSignal=SIGINT
TimeoutStopSec=60min
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Pouvez-vous suggérer comment déboguer le service systemctl pour qu'il ne se suicide pas?

7
boardrider

L'erreur 217 indique que l'utilisateur n'existait pas au moment où le service a tenté de démarrer. Dans votre cas, l'utilisateur spécifié dans votre service est clouddirect.

 Main PID: 10064 (code=exited, status=217/USER)

Jan 09 16:09:42 ip-172-30-1-96.us-west-1.compute.internal systemd[1]: clouddirectd.service: main process exited, code=exited, status=217/USER

Cela peut être dû au fait que ce n'est pas le nom d'utilisateur réel (par exemple s'il a une faute de frappe), il peut également être causé si l'utilisateur fait partie d'un magasin d'utilisateurs externe (ex: LDAP ou Active Directory) et du service qui a besoin pour démarrer qui permet au serveur Linux d'accéder au magasin d'utilisateurs externe n'est pas encore activé. Par exemple vasd.service démarre un produit utilisé pour permettre à Linux de s'authentifier auprès d'Active Directory, si vasd.service n'est pas activé et vous avez spécifié un utilisateur qui n'est disponible que dans Active Directory, vous souhaitez ajouter ce service dans votre After= ligne. Par exemple:

After=network.target vasd.service
13
JoshMc