busyboxを使用して起動後にプログラムを自動的に実行するには?

busyboxを使用して起動後にプログラムを自動的に実行するには?

私はbusyboxで組み込みLinuxを使用しています。 「myApplication」(起動後、実行レベル5、すべてのサービスが起動する)というアプリケーションを自動的に実行したいと思います。

これまで私がしたこと:

  • /etc/init.d/の下にS90myscriptというスクリプトを作成しました。
  • その後、inittabに次の行を追加しました。

::sysinit:/etc/init.d/S90myscript

スクリプトには以下が含まれます。

! /bin/sh
### BEGIN INIT INFO
# Provides: myApplication
# Should-Start: $all
# Required-Start: $remote_fs $network $local_fs
# Required-Stop: $remote_fs
# Default-Start: 5
# Default-Stop: 0 6
# Short-Description: start myprogram at boot time
### END INIT INFO
#

set -e

. /lib/lsb/init-functions
PATH=/root:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin
PROGRAMNAME="myApplication"
case "$1" in
start)
$PROGRAMNAME
;;
stop)
skill $PROGRAMNAME
;;
esac
exit 0

私は何を逃したことがありませんか?シンボリックリンク?私は何が間違っていましたか?

事前にありがとう

答え1

解決策が見つかりました。

  1. myApplication入れた/usr/sbin/
  2. 次の場所にあるスクリプトにmyAppというシンボリックリンクを作成しました(そのスクリプトで実行する必要が/etc/init.d/S99myAppScript ある.shがないことに注意してください)。sudo chmod 755
  3. コマンドの前のファイルの末尾にrcS次の行を追加しました。/etc/init.d/done

    myApp &
    

システムを再起動すると、myApplicationが自動的に実行されます。

答え2

  1. どこにでもアプリケーションを配置してください。私の場合、フルパスは/ root / myApplicationです。
  2. /etc/init.dのすべてのinitスクリプトは、番号順に1つずつ実行されます。したがって、スクリプト名をS99myAppScriptまたはS98myAppScriptに設定するのが最善です。他のすべてのスクリプトの後に私のスクリプトを実行したいからです。
    #!/bin/sh
    # see about BusyBox init https://www.halolinux.us/embedded-systems/busybox-init.html
    
    # Make sure the application exists
    [ -f /root/myApplication ] || exit 0
    
    umask 077
    
    start() {
        echo "Start application:"
        /root/myApplication & # <-- Don't forget the "&" otherwise other system stuff won't start until you leave your app !!!
    }
    stop() {
        killall -q myApplication
    }
    restart() {
        stop
        start
    }
    
    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      restart|reload)
        restart
        ;;
      *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    esac
    
    exit $?

バラより返品

  1. コンピュータを再起動またはシャットダウンできないのはなぜですか?停電を防ぐためにプログラムを自動的に実行します。

アプリケーションを終了するまで「&」やその他のシステム項目が起動しないことを忘れないでください。

関連情報