デーモンを介してOPENGLプログラムを実行することは可能ですか?

evsc

私の主な質問は、デーモン(upstartスクリプト)を介してOPENGLプログラムを実行することは可能ですか?プログラムは画面にウィンドウを表示します。

詳細:デーモンで実行したいopenglプログラム(openframeworks、C ++で実行)があります。

手動で次のようにターミナルでプログラムを起動します。

planeviz@planeviz:~/src/of/apps/myApps/planeEtoiles/bin$ ./planeEtoiles

ここで、アップスタートスクリプト(/etc/init/myapp.conf)を作成しました。このスクリプトは、コンピューターの起動時にプログラムを起動し、クラッシュした場合は必ず再起動する必要があります。

# job file
description "myapp"
author "eva"

# When to start the service
start on startup
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Start the process
script
    sudo /home/planeviz/src/of/apps/myApps/planeEtoiles/bin/planeEtoiles
end script

次に、次の方法でデーモンを起動しようとします

sudo service myapp start

アプリケーションが開きません。dmesg教えてください:

planeviz@planeviz:/etc/init$ dmesg | grep "init:"
[ 5282.003496] init: myapp main process (8008) terminated with status 139

終了ステータス139は、セグメンテーション違反を示唆しているようです。upstartログのプログラムの出力を見ると、openglウィンドウの作成に関連する最後のエラーが表示されます。

planeviz@planeviz:/etc/init$ sudo tail /var/log/upstart/planeetoiles.log
....
[ error ] ofAppGLFWWindow: couldn't init GLFW

これは、upstartでOPENGLプログラムを実行することさえ可能かどうか、またはそれがバックグラウンドプロセスでのみ動作することを意図しているのかどうか疑問に思います。

Gilles'SO-悪であることをやめなさい '

Upstartはシステムサービス用に設計されています。(少なくとも最近のバージョンでは)ユーザーセッション中に実行されるコマンドを監視するためにそれを使用できますが、それは不器用です。

Upstartを使用すると、GUIウィンドウを表示するサービスを実行する場合、そのサービスはログインしている間のみ実行できます。ランレベルに基づいて開始および停止するのではなく、GUIのログインおよびログアウトイベントに基づいて開始および停止する必要があります。 。

start on desktop-session-start
stop on desktop-shutdown

また、ディスプレイにアクセスできるようにするためのサービスも必要です。GUIアプリケーションは、DISPLAY環境変数を使用して、表示する場所を決定します。通常の状況では、GUIセッションはと呼ばれるディスプレイになります:0

env DISPLAY=:0

アプリケーションは、ディスプレイにアクセスするための許可も取得する必要があります。この権限は、GUIセッションの開始時に自動的に生成され、.Xauthorityホームディレクトリ内のファイル(またはXAUTHORITYディスプレイマネージャによって環境変数で示される別のファイル)に保存される「Cookie」(パスワード)の形式を取ります。ディスプレイマネージャが使用~/.Xauthorityし、ユーザーとしてサービスを実行する場合(とにかく実行する必要があります)、を設定する必要はありませんXAUTHORITY詳細については、「rootとして別のユーザーのデスクトップでグラフィカルプログラムを起動できますか?」を参照してくださいおよびリモートXディスプレイでウィンドウ開く(「ディスプレイを開けない」理由)?

setuid evsc

Upstartの代わりに、システムサービス管理ではなく監視のみを行う監視ツールを使用できます。プロセスが常に実行さていることを確認すると、いくつかの可能性がリストされます。デーモンツールsuperviseから使用してみましょうどこかにディレクトリを作成します例:このディレクトリに、実行を継続するアプリケーションであるという実行可能ファイルを作成します~/.planeEtoilesrun

mkdir ~/.planeEtoiles
ln -s /home/planeviz/src/of/apps/myApps/planeEtoiles/bin/planeEtoiles ~/.planeEtoiles/run

ログイン時に自動的に起動supervise ~/.planeEtoilesするアプリケーションにコマンド追加しますサービスを停止するには、svc次のコマンドを使用します

svc -t -x ~/.planeEtoiles

パズルの最後のピースは、svcログアウト時にそのコマンドを実行することです。この機能が欠落しているようです。そうでない場合は、文書化が非常に不十分です。GDMを使用している場合、から実行する回避策があり/etc/gdm/PostSession/Defaultますが、そのファイルはrootとしてコマンドを実行します。これは適切な解決策ではなく、Lightdmには適用されません。モニタースクリプトユーザーログアウト(root以外のユーザー)で実行し、どのように管理者権限を持っていない場合、私はGNOMEログアウト時にスクリプトを実行することができますか?ソリューションのために。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

デーモンを介してOPENGLプログラムを実行することは可能ですか?

分類Dev

FTPプロンプトを介してプログラムを実行することは可能ですか?

分類Dev

Javaプログラムを介してリモート(ssh)でコマンドを実行することは可能ですか?

分類Dev

プログラムをデーモンとして実行することと、&を使用してnohupを使用してプログラムを実行することには違いがありますか?

分類Dev

Rをデーモンとして実行することは可能ですか?

分類Dev

プログラムをRubyとPERLの両方として実行することは可能ですか?

分類Dev

プログラムをデーモンとして実行することと、「&」を使用してバックグラウンドでフォークすることの違いは何ですか?

分類Dev

Javaで再帰を使用してプログラムを無限に実行することは可能ですか?

分類Dev

不足しているの#includeは、実行時にプログラムを中断することは可能ですか?

分類Dev

送信キーを使用してvbscriptファイルを作成し、同時にプログラムを実行して実行することは可能ですか?

分類Dev

プログラムで.scnファイルをダウンロードして実行することは可能ですか?

分類Dev

GPUサポートなしでtensorflow-on-sparkプログラムを実行することは可能ですか?

分類Dev

コマンドラインを介してリモートPCでプログラムを実行するにはどうすればよいですか?

分類Dev

JMXを介してプログラムでJavaプロセスを閉じることは可能ですか?

分類Dev

AmazonAlexaを介してプログラムをリモートで実行する

分類Dev

別のプログラムを介してプログラムを呼び出すことは可能ですか?

分類Dev

xamarinクロスプラットフォームでスライディングドロワーを実行することは可能ですか?

分類Dev

プログラムは、systemdデーモンとして実行されているかどうかをどのように検出できますか?

分類Dev

サービス名を使用してkubernetesでJavaプログラムをリモートデバッグすることは可能ですか?

分類Dev

スクリプトを介して複数のプログラムをインストールすることは可能ですか?

分類Dev

コンパイル時にカスタムプログラムを実行することは可能ですか?

分類Dev

bazelを介してkubernetesアプリケーションをデプロイすることは可能ですか?

分類Dev

XSセクションを含むPerlをデバッグしてプログラムフローを確認することは可能ですか?

分類Dev

Pythonを使用してプログラムのプラグインを作成することは可能ですか?

分類Dev

プログラムで、またはCLIを介してAPNS証明書をAzure通知ハブにアップロードすることは可能ですか?

分類Dev

TransmissionデーモンとQt / GTK GUIを同時に同期して実行することは可能ですか?

分類Dev

Ansibleを介してフォアグラウンドでスクリプトを実行することは可能ですか?

分類Dev

APIを介してSkype通知をプログラムでフィルタリングすることは可能ですか?

分類Dev

RevitAPIまたはFORGEAPIを介してRevitモデルに新しいクラウド(BIM 360)リンクをロードすることは可能ですか?

Related 関連記事

  1. 1

    デーモンを介してOPENGLプログラムを実行することは可能ですか?

  2. 2

    FTPプロンプトを介してプログラムを実行することは可能ですか?

  3. 3

    Javaプログラムを介してリモート(ssh)でコマンドを実行することは可能ですか?

  4. 4

    プログラムをデーモンとして実行することと、&を使用してnohupを使用してプログラムを実行することには違いがありますか?

  5. 5

    Rをデーモンとして実行することは可能ですか?

  6. 6

    プログラムをRubyとPERLの両方として実行することは可能ですか?

  7. 7

    プログラムをデーモンとして実行することと、「&」を使用してバックグラウンドでフォークすることの違いは何ですか?

  8. 8

    Javaで再帰を使用してプログラムを無限に実行することは可能ですか?

  9. 9

    不足しているの#includeは、実行時にプログラムを中断することは可能ですか?

  10. 10

    送信キーを使用してvbscriptファイルを作成し、同時にプログラムを実行して実行することは可能ですか?

  11. 11

    プログラムで.scnファイルをダウンロードして実行することは可能ですか?

  12. 12

    GPUサポートなしでtensorflow-on-sparkプログラムを実行することは可能ですか?

  13. 13

    コマンドラインを介してリモートPCでプログラムを実行するにはどうすればよいですか?

  14. 14

    JMXを介してプログラムでJavaプロセスを閉じることは可能ですか?

  15. 15

    AmazonAlexaを介してプログラムをリモートで実行する

  16. 16

    別のプログラムを介してプログラムを呼び出すことは可能ですか?

  17. 17

    xamarinクロスプラットフォームでスライディングドロワーを実行することは可能ですか?

  18. 18

    プログラムは、systemdデーモンとして実行されているかどうかをどのように検出できますか?

  19. 19

    サービス名を使用してkubernetesでJavaプログラムをリモートデバッグすることは可能ですか?

  20. 20

    スクリプトを介して複数のプログラムをインストールすることは可能ですか?

  21. 21

    コンパイル時にカスタムプログラムを実行することは可能ですか?

  22. 22

    bazelを介してkubernetesアプリケーションをデプロイすることは可能ですか?

  23. 23

    XSセクションを含むPerlをデバッグしてプログラムフローを確認することは可能ですか?

  24. 24

    Pythonを使用してプログラムのプラグインを作成することは可能ですか?

  25. 25

    プログラムで、またはCLIを介してAPNS証明書をAzure通知ハブにアップロードすることは可能ですか?

  26. 26

    TransmissionデーモンとQt / GTK GUIを同時に同期して実行することは可能ですか?

  27. 27

    Ansibleを介してフォアグラウンドでスクリプトを実行することは可能ですか?

  28. 28

    APIを介してSkype通知をプログラムでフィルタリングすることは可能ですか?

  29. 29

    RevitAPIまたはFORGEAPIを介してRevitモデルに新しいクラウド(BIM 360)リンクをロードすることは可能ですか?

ホットタグ

アーカイブ