我有一个应用程序,它是一个目标文件(从 ac 源代码获得)。当我从终端运行这个应用程序时,它工作正常。
我想在系统启动时运行这个应用程序。由于当前我正在终端上打印所有日志数据,因此我想打开终端并在终端中运行此应用程序(以便我可以看到实时日志并从终端向我的应用程序提供输入)。
在搜索了一些教程后,我能够创建一个在启动时运行 shell 脚本的服务。我修改了此脚本以打开终端并运行应用程序。如果我仅从终端运行 shell 脚本,它就可以正常工作。
但是当我从服务运行脚本时,我收到以下警告:
(x-terminal-emulator:16048):Gtk-警告 **:无法打开显示:
我哪里出错了?
这里我使用 beaglebone black 与 debian 一起运行。
这是我的服务代码(application.service)
[Unit]
Description=application setup
[Service]
WorkingDirectory=/root/application/
ExecStart=/root/application/start_application
SyslogIdentifier=application
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
这是start_application.sh
#! /bin/sh
#
# start_app_server
#
echo "Starting application server"
x-terminal-emulator -e "app_server/a.out"
echo Done
答案1
*nix 的方法是在没有终端的情况下启动脚本并将输出发送到日志文件。例如:
app_server/a.out > /var/log/app_server.log &
然后您可以将其添加到用户 crontab 中@reboot
。
一旦有效,真实的*nix 的方法是创建一个服务,其中包含某种形式的工控机如果需要的话。