ACソースコードからインポートされたオブジェクトファイルであるアプリケーションがあります。端末でこのアプリケーションを実行すると正常に動作します。
システムの起動時にこのアプリケーションを実行したいと思います。現在、端末からすべてのログデータを印刷しているので、端末を開き、このアプリケーションを端末で実行したいと思います(リアルタイムログを見て、端末から自分のアプリケーションに入力を提供できるように)。
いくつかのチュートリアルを検索した後、起動時にシェルスクリプトを実行するサービスを作成できました。端末を開き、アプリケーションを実行するようにこのスクリプトを変更しました。端末でシェルスクリプトを実行すると正常に動作します。
ただし、サービスでスクリプトを実行すると、次の警告が表示されます。
(x-terminal-emulator:16048): Gtk-warning**: ディスプレイを開けません:
私はどこで間違っていますか?
ここでは Debian で動作する beaglebone black を使用しています。
私のサービスコード(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のアプローチは、いかなる形でも含まれるサービスを作成することです。産業用コンピュータ必要に応じて。