我在 Debian 8.6 上创建了一个服务,当我尝试使用 service 命令启动它时,我收到一个错误。
我已经尝试过systemctl daemon-reload
,但仍然得到相同的结果。
$ sudo service cloud9 start
$ sudo service cloud9 status
● cloud9.service - cloud9
Loaded: loaded (/etc/systemd/system/cloud9.service; enabled)
Active: failed (Result: start-limit) since Thu 2016-10-13 07:21:02 UTC; 2s ago
Process: 2610 ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin (code=exited, status=216/GROUP)
Main PID: 2610 (code=exited, status=216/GROUP)
Oct 13 07:21:02 test-vm systemd[1]: cloud9.service: main process exited, code=exited, status=216/GROUP
Oct 13 07:21:02 test-vm systemd[1]: Unit cloud9.service entered failed state.
Oct 13 07:21:02 test-vm systemd[1]: cloud9.service holdoff time over, scheduling restart.
Oct 13 07:21:02 test-vm systemd[1]: Stopping cloud9...
Oct 13 07:21:02 test-vm systemd[1]: Starting cloud9...
Oct 13 07:21:02 test-vm systemd[1]: cloud9.service start request repeated too quickly, refusing to start.
Oct 13 07:21:02 test-vm systemd[1]: Failed to start cloud9.
Oct 13 07:21:02 test-vm systemd[1]: Unit cloud9.service entered failed state.
配置位于/etc/systemd/system/cloud9.service
:
[Unit]
Description=cloud9
[Service]
ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin
Restart=always
User=nobody
Group=nobody
Environment=PATH=/bin:/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/user/c9sdk
[Install]
WantedBy=multi-user.target
答案1
2610 ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin (代码=已退出,状态=216/GROUP) …… 10 月 13 日 07:21:02 test-vm systemd[1]:cloud9.service:主进程退出,代码=退出,状态=216/GROUP
…描述了问题。您的组nobody
不是系统上的有效组。指定有效组。
环境=PATH=/bin:/usr/bin:/usr/local/bin
这可能是不必要的。
-w /home/用户 -l 0.0.0.0
在一个更好的世界中,这里的 cloud9 服务程序将接收其侦听套接字作为打开的文件描述符,并继承其工作目录(具有讽刺意味的是,您有在单元的其他地方明确设置)。
进一步阅读
答案2
删除重新启动参数并添加有效的用户/组帮助我解决了这个问题。
[Unit]
Description=cloud9
[Service]
ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin
User=user
Group=group
Environment=PATH=/bin:/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/user/c9sdk
[Install]
WantedBy=multi-user.target
答案3
使用 User= 设置时,无需设置组(因为它将设置为用户默认组)。
DynamicUser=yes 可能是一个建议,而不是 nobody user (systemd.exec(8)),它在仅存在于服务环境中的不存在的用户下运行服务,而不是使用真实帐户(而是创建一个系统用户目的)。