起動時にプログラムが自動的に起動できるようにする

起動時にプログラムが自動的に起動できるようにする

yoctoディストリビューションで起動時に実行したいC ++プログラムがあります。

/etc/init.d/にtest.shという単純なスクリプトを追加してみました。

echo "start my program"
ProgramName

"ProgramName"を使用すると、私のプログラムがシェルで実行されたときに実行されます。この新しいスクリプトを実行すると、プログラムが実行されます。

rc5フォルダにシンボリックリンクとして追加しました。やり直してみましたが、何も起こりませんでした。もっとやるべきことはありますか?

レシピにどのように適用できますか?結局私はこれを自動化したいと思います。

答え1

起動時にプログラムを実行する簡単な解決策は、次のようにcrontabエントリを作成することです。

@reboot /path/to/program

これは通常、システムデーモンではなくプログラムには十分です。

この@rebootタグは、システム起動時にプログラムが起動してサポートされていることを確認します。最大クローンの実装:

@reboot        Run once, at startup.          
@yearly        Run once a year, "0 0 1 1 *".  
@annually      (same as @yearly)              
@monthly       Run once a month, "0 0 1 * *". 
@weekly        Run once a week, "0 0 * * 0".  
@daily         Run once a day, "0 0 * * *".   
@midnight      (same as @daily)               
@hourly        Run once an hour, "0 * * * *". 

詳細については、man 5 crontabシステムを参照してください。

答え2

確認してくださいこのQ&A同様の議論をしてください。スクリプトにヘッダーを追加します。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Sample_GT02 daemon startup script
# Description:       Sample Server for GT02 class 
### END INIT INFO

答え3

レシピに追加:

  • INITSCRIPT_NAMEと入力し、etc/init.dにインストールする必要がある初期化スクリプトのファイル名を追加します。
  • INITSCRIPT_PARAMSを設定し、スクリプトの実行レベルとスクリプトを実行する必要がある初期化レベルを指定します。

たとえば、「poky/meta/recipes-connectivity/connman/connman.inc」のファイルを参照できます。次の例の使用法を見ることができます。

    INITSCRIPT_NAME = "connman"
    INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."

上記のコードスニペットでは、connmanスクリプトはect / init.dにインストールされ、スクリプトの実行レベルは05です。スクリプトは initlevels 2、3、5 で始まり、レベル 0、1、6 で停止します。

関連情報