我试图在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
,你能建议如何调试这个系统Can服务,这样它就不会死机并自动重新启动吗?
发布于 2018-08-09 18:18:52
错误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或)的一部分,并且需要启动允许Linux服务器访问外部用户存储的服务还没有结束。例如,vasd.service
启动一个用于允许Linux针对Active Directory进行身份验证的产品,如果vasd.service
没有启动,并且您已经指定了一个仅在Active中可用的用户,则需要在After=
行中添加该服务。例如:
After=network.target vasd.service
发布于 2022-01-11 18:04:53
这个问题有两部分。一个是如何诊断217/用户,另一个是如何修复它。我把注意力集中在前者上。
对于217/用户,这里有一些很好的提示:
217并不意味着它是一个用户问题,它只是意味着它退出了217。可能或不可能..。
您可以使用journalctl来查看哪些服务“在它开始出现之后”出现的日志,或者什么不是。
在系统启动时,“网络用户”可能还没有可用,您可以通过添加After=nss-user-lookup.target
https://systemd.io/UIDS-GIDS/来修复这个问题,尽管这里不是这样的,因为它在重新启动之后仍然会失败,这是稍后的事。当服务启动时,systemd期望指定的用户“可用”。因此,对于“系统用户”(启动早期运行的进程),它们需要在本地框上可用。对于以后开始的进程,它们可以是“网络用户”。
您还可以尝试将您的组和用户名(和环境)更改为“认为”系统正在运行的内容,并手动运行它,看看会发生什么。https://serverfault.com/questions/410577/execute-a-command-from-another-group类型的希望系统输出更多的调试,这样您就可以更容易地知道它正在运行的是什么。
在某些奇怪的情况下,您可能需要同时指定User=和Group= https://superuser.com/a/1452367/39364
在我们的示例中,运行"vintela“时有一条消息"SELinux可能没有正确配置”,并且足够确定的是,在禁用SELinux之后,它开始按预期工作,不超过217。redhat 8
https://stackoverflow.com/questions/48176240
复制相似问题