作为用户的 Systemd 服务单元文件
Systemd service unit file as user
我对 Centos 7 中的 systemd 单元文件的概念不熟悉,但需要在启动时启动 MATLAB 许可证管理器。 MATLAB 没有提供有关如何执行此操作的具体解决方案,以下内容似乎有效,但在键入 systemctl start license-manager
和 systemctl 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
这应该可以解决您的问题。
我对 Centos 7 中的 systemd 单元文件的概念不熟悉,但需要在启动时启动 MATLAB 许可证管理器。 MATLAB 没有提供有关如何执行此操作的具体解决方案,以下内容似乎有效,但在键入 systemctl start license-manager
和 systemctl 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
这应该可以解决您的问题。