【问题标题】:Systemd service unit file as userSystemd 服务单元文件作为用户
【发布时间】:2017-05-06 08:45:38
【问题描述】:

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

请注意,这确实需要以特定用户而不是 root 身份运行。

这是我的/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

【问题讨论】:

    标签: linux centos centos7 systemd


    【解决方案1】:

    你可以试试 Crontab

    bash$ crontab -e
    

    然后添加以下行

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

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

    【讨论】:

    • 应该可以,谢谢你的建议!奇怪的是它不在 MATLAB 的网站上。
    【解决方案2】:

    传统上,在以其他用户身份运行命令时,总是要求非 root 用户输入密码,是的。

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

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

    【讨论】:

    • 感谢 Robin,但即使作为用户 lmlicenseuser,我也会收到提示输入密码。将其依赖更改为 default.target 是否更可取?
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2017-01-19
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多