すべてのタスクが完了したら、起動時にrootとしてスクリプトを実行します。

すべてのタスクが完了したら、起動時にrootとしてスクリプトを実行します。

裸のLinuxディストリビューションを含むIoTデバイスがあります。いいえcrontabchkconfigまたはupdate-rc

デバイスのすべてのエントリがロードされた後にデバイスが起動したときにスクリプトをどのように実行しますか?スクリプトを追加できると思いましたが、/etc/init.d何も起こらないようです。これが私が使用するスクリプトです。

#! /bin/sh -e
# /etc/init.d/camstart

. /etc/init.d/functions.sh

start() {
    /usr/local/packages/application/myapp
}

stop() {
    kill `pidof myapp`
    kill `pidof myappinternal`
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        pidof myapp
        pidof myappinternal
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0

私が持っているもう一つのアイデアはを使用することでしたが、/etc/rc.localデバイスにそのファイルがありません。rc?.d1〜6からSまでのフォルダがあります。どちらにスクリプトを置くのは効果がないようです。

どんな提案がありますか?

編集:どのLinuxディストリビューションかはわかりませんが、確認の結果、/etc/*releaseYoctoプロジェクトのPokyに基づいていることがわかりました。/proc/versionLinux バージョン 4.9.62 から始まります。

私が知っている限り、サービスを開始systemctlするために使用されますsystemd

EDIT2:言及するのを忘れました。systemd私のスクリプト用のサービスを作成し、それを使用して起動しようとしましたが、systemctl start appすぐに終了しますexit code 0

アプリケーションサーバー:

[Unit]
Description=app
After=acap-pre.target
Requires=acap-pre.target

[Service]
Slice=extension-acap.slice
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/app start
ExecStop=/etc/init.d/app stop

最終編集:確認したら正常に動作します。システム起動スクリプトを作成する方法私のものがsystemd serviceなくなったのを見つけました。

[Install]
WantedBy=multi-user.target

ベストアンサー1

ランレベル3でデーモンを自動的に起動するプロセスは簡単です。

  1. スクリプトをに入れて/etc/init.d
  2. スクリプトの権限と所有権を確認し、
  3. /etc/rc3.d次の名前を使用してスクリプトへのシンボリックリンクを作成しますS99scriptmame

S方法サービス開始。この数字は、01(最も高い優先順位スクリプト)から99(最後の優先順位スクリプト)までのサービス開始順序の順位付けに使用されます。

/etc/rc0.d/etc/rc6.dおそらく、名前付き(stop)と(restart)からスクリプトリンクを作成する必要があるかもしれませんK01scriptname。通常、最後に始まったデーモンは最初に停止します。

バラよりman init.d^1完全な説明のために。

おすすめ記事