启动时启动应用程序

Sid*_*411 2 fedora rhel

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

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

gar*_*Red 5

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

[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
Run Code Online (Sandbox Code Playgroud)

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

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

MYSERVICE_ARGS=--posix
Run Code Online (Sandbox Code Playgroud)

(如果您使用的命令行选项的变量,然后将变量添加到您的命令ExecStart如下:ExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS)

测试它:

# systemctl start myservice
Run Code Online (Sandbox Code Playgroud)

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

启用它以在启动时启动:

# systemctl enable myservice
Run Code Online (Sandbox Code Playgroud)

它现在应该在联网后自动启动。

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

您可以使用更多选项 - 阅读手册页。此外,在/usr/lib/systemd/system.