作为用户的 Systemd 服务单元文件

Systemd service unit file as user

我对 Centos 7 中的 systemd 单元文件的概念不熟悉,但需要在启动时启动 MATLAB 许可证管理器。 MATLAB 没有提供有关如何执行此操作的具体解决方案,以下内容似乎有效,但在键入 systemctl start license-managersystemctl stop license-manager 时要求输入密码。这是预期的吗?

请注意,这确实需要 运行 作为特定用户而不是根用户。

这是我的/etc/systemd/system/license-manager.service文件:

[Unit]
Description=MATLAB FlexLM license manager

[Service]
Type=forking
ExecStart=/usr/local/MATLAB/R2016a/etc/lmstart
ExecStop=/usr/local/MATLAB/R2016a/etc/lmdown
KillMode=none
Restart=on-failure
RestartSec=90
User=lmlicenseuser

[Install]
WantedBy=multi-user.target

传统上,当 运行ning 作为其他用户执行命令时,总是要求非 root 用户输入密码,是的。

但是,因为您已经指定它是 multi-user.target 的依赖项,所以以后每次重新启动时它应该总是自动启动,所以您以后不需要输入密码。

如果出于某种原因您以后仍然需要手动控制它,您可以使用 sudo 并编辑 /etc/sudoers 以允许这两个特定命令 运行 没有密码,使用 NOPASSWD.

你可以试试 Crontab

bash$ crontab -e

然后添加以下行

@reboot /usr/local/MATLAB/R201Xx/etc/lmstart

这应该可以解决您的问题。