启动时启动应用程序

启动时启动应用程序

我目前在我们的项目中使用 RHEL 7.0。我有一个嵌入式应用程序,我想在启动时运行它。我有一个相同的 exe 文件。我尝试过使用 systemctl 命令,但没有帮助。我还尝试编辑 inittab 文件,但这也没有帮助。我还尝试添加 rc.local 文件并编辑 rc.d 以添加 rc.local 的执行,但它说该文件无法修改。 (当我尝试这个时,我处于 ​​sudo 模式)。

我希望在启动时启动应用程序而不要求用户登录。另外,我们应该将 exe 保存在文件系统中的什么位置,以便在启动时检测到它。有人可以指导我如何实现这一目标吗?

答案1

您可以使用以下单元文件作为模板:

[Unit]
Description=A Test Service That Prints the date
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/myservice
ExecStart=/usr/bin/bash -c "/usr/bin/date >> /now.txt" $MYSERVICE_ARGS
[Install]
WantedBy=multi-user.target

将其保存/etc/systemd/system/.service文件扩展名(例如 /etc/systemd/system/myservice.service

您的应用程序所需的任何环境变量都可以放置在 中/etc/sysconfig/myservice,包括创建一个变量来保存命令行选项:

MYSERVICE_ARGS=--posix

(如果您使用变量作为命令行选项,则将该变量添加到您的命令中,ExecStart如下所示ExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS:)

测试它:

# systemctl start myservice

您现在应该有一个文件/now.txt,每次运行时都会附加日期/时间。

让它在启动时启动:

# systemctl enable myservice

现在它应该在网络出现后自动启动。

更改该ExecStart行以运行您的应用程序。请记住,它systemd不在ExecStartshell 中运行,因此如果您需要重定向,那么您需要bash -c按照示例运行。另外,不会有$PATH变量,因此使用完整路径。该应用程序将以用户身份运行root

您可以使用更多选项 - 阅读手册页。另外,浏览系统的单元文件/usr/lib/systemd/system

相关内容