使用 sudo 权限运行 systemd 服务

使用 sudo 权限运行 systemd 服务

我有一台 Raspberry PI(Ubuntu 20.04),它正在运行一个 Web UI,其中有一个按钮可以打开继电器(从 Web UI 与 Raspberry PI 通信),因此为了做到这一点,我需要使用 sudo 权限运行它。这是我的服务文件

[Unit]
Description= My Web UI

[Service]
WorkingDirectory=/var/www
ExecStart=/home/ubuntu/.dotnet/dotnet /var/www/My.Web.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-My.Web
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

如果我把/usr/bin/sudoExecStart 开始时是否只需要执行这些?

我需要用户=www-data? 我尝试在 USER 中输入 sudo,但出现错误:“Auth 无法识别密码”

答案1

服务通过服务文件启用和禁用sudo,不需要包含在服务文件中。您配置文件的方式在语法上似乎是正确的,因此,考虑到这一点,应该可以像这样激活它:

sudo systemctl enable {name_of}.service

笔记:请务必{name_of}用实际.service文件名替换。

如果服务要以 的身份运行www-data,则User=www-data需要 。

只要一切顺利,您就应该能够启动服务:

sudo service {name_of} start

笔记:再次强调,一定要用{name_of}服务名称替换。注意.service这里没有。

只要一切正常,您就可以将其视为常规服务,并使用以下命令检查其状态:

sudo service {name_of} status

停止方法如下:

sudo service {name_of} stop

并重新启动:

sudo service {name_of} restart 

笔记:这通常在更新 .Net 包后需要执行,以确保清除旧缓存并正确加载新文件。

相关内容