Amazon web services 如何调试失败的systemctl服务(代码=退出,状态=217/用户)?

Amazon web services 如何调试失败的systemctl服务(代码=退出,状态=217/用户)?,amazon-web-services,amazon-ec2,service,rhel7,systemctl,Amazon Web Services,Amazon Ec2,Service,Rhel7,Systemctl,我试图在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:

我试图在
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 ~]$ 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服务,使其不会自杀吗?

错误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=network.target vasd.service

我知道在你发布这个问题7个月后我才发现并回答这个问题,但你能告诉我这个答案是否适用于你的问题吗?你的答案@JoshMc,方向正确(即用户名有问题)。boardrider我注意到我的答案有很多赞成票,如果它符合你的问题,你介意接受它吗?我确实提到了它可能是一个简单的打字错误,我想你是在你的评论中指出的。或者你从另一台服务器复制了服务文件,而用户在这个服务器上不存在。
After=network.target vasd.service