Answers:
告诉systemd使用来运行服务
sudo
?
sudo
与它无关。
通常,您在单元文件部分中使用User=
和Group=
指令指示systemd以特定用户/组的身份运行服务[Service]
。
将它们设置为root(或删除它们,因为默认情况下以root运行)。
User=root
。看我的答案。
要清除的是,systemd
系统服务默认情况下以root用户身份运行,但是默认行为与使用运行系统服务之间仍然存在差异User=root
。
如在生成的进程中的环境变量中所述,只有设置了以下变量,才设置这些变量User=
:
$USER, $LOGNAME, $HOME, $SHELL
我测试以确认这一发现。因此,如果要作为root用户运行systemd服务,并且需要上述变量之一,则需要设置User=root
。
临时解决方案,但在紧急情况下起作用:
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
可以与在systemd单元文件中具有sudo特权的用户一起运行,如下所示:
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target
sudo
会降低启动速度。这是没有必要的。
systemd
,以root权限运行单元文件。