web-dev-qa-db-ja.com

失敗したsystemctlサービスをデバッグする方法(コード=終了、ステータス= 217 / USER)?

rhel7(AWS/EC2にある)に最初のサービスを追加しようとしていますが、-サービスが正しく構成されていません-取得したとおり:

[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.

また:

[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

そして私のユニットファイルは:

[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

自殺しないようにsystemctlサービスをデバッグする方法を提案できますか?

7
boardrider

エラー217は、サービスを開始しようとしたときにユーザーが存在しなかったことを示しています。あなたの場合、サービスで指定されたユーザーは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

これは、実際のユーザー名ではない場合(たとえば、タイプミスがある場合)に発生する可能性があります。また、ユーザーが外部ユーザーストア(例:LDAPまたはActive Directory)の一部であり、必要なサービスである場合にも発生する可能性があります。開始するには、Linuxサーバーが外部ユーザーストアにアクセスできるようにしますが、まだ稼働していません。たとえば、vasd.serviceは、LinuxがActive Directoryに対して認証できるようにするために使用される製品を開始します。vasd.serviceが起動しておらず、Active Directoryでのみ利用可能なユーザーを指定した場合、そのサービスをAfter=行。例えば:

After=network.target vasd.service
13
JoshMc