![使用 sudo 权限运行 systemd 服务](https://linux22.com/image/1186222/%E4%BD%BF%E7%94%A8%20sudo%20%E6%9D%83%E9%99%90%E8%BF%90%E8%A1%8C%20systemd%20%E6%9C%8D%E5%8A%A1.png)
我有一台 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 包后需要执行,以确保清除旧缓存并正确加载新文件。