当我的 Ubuntu 15.04 机器启动时,如何以 root 用户身份运行程序?

use*_*580 4 startup scripting

在 Ubuntu 15.04 上,我有这个文件:/usr/local/bin/myscript(这是我制作的脚本)。

如果我在我的帐户下运行此命令,它将以 root 用户身份执行我需要它执行的操作:sudo /usr/local/bin/myscript

我现在想让/usr/local/bin/myscript在机器启动时运行,但作为 root 用户(就像我运行 sudo 命令但不必输入任何密码)。这是如何在 Ubuntu 15.04 上完成的?

Jde*_*eBP 15

现在,systemd 给出了答案。

您使用的是 Ubuntu 15 版。您有 systemd。 /etc/rc.local充其量是 systemd 中的一种向后兼容机制。正如下面超链接的 AskUbuntu 问题中的混乱所示,使用它可能会出错。所以制作一个合适的 systemd 服务单元。

您正在创建一个本地的、非系统的、非包的服务单元,因此单元文件将位于/etc/systemd/system/该类型单元所在的位置。让我们称之为/etc/systemd/system/myscript.service。它包含了:

[单元]
说明=user2580 的脚本
文档=https://unix.stackexchange.com/questions/202698/

[服务]
类型=简单
ExecStart=/usr/local/bin/myscript

[安装]
WantedBy=multi-user.target

如果您的脚本分叉“为了守护进程”,请阻止它这样做。那完全没有必要。

  • 运行systemctl preset myscript.service(作为超级用户)让它在引导时自动启动。
  • 立即运行systemctl start myscript.service(以超级用户身份)手动启动它。
  • 运行systemctl status myscript.service以查看其状态。

请注意,这不会在能够与 X 服务器通信的上下文中执行您的脚本。它甚至可以在 X 服务器启动之前运行。但是你没有提到作为 X 客户端的任何要求,也没有提到像HOME环境变量这样的新手的其他复杂性。无论如何,这些都是其他问题的主题。所以我就不说了。

进一步阅读