web-dev-qa-db-ja.com

BeagleBoneBlackを使用して起動時にスクリプトを実行する

BeagleBone が起動したときに実行したいa.outがあります。これは実際には、BeagleBoneの電源が入るとすぐに起動したいソケットサーバーです。これを/etc/init.dに入れようとしましたが、役に立ちませんでした。この実行可能ファイルを実行するためのシェルスクリプトを作成しましたが、それでも役に立ちませんでした。

スクリプトが起動したらすぐに実行するにはどうすればよいですか?

8
Sagar Sm

これを理解するのにかなりの時間がかかりましたが、たくさんの研究を重ねて、ついに探していたものを見つけました。

  1. 必要なコードをコンパイルします。

  2. 起動/起動時にコードを起動するbashスクリプトを作成します

    cd /usr/bin/
    

    タイプnano scriptname.sh

    #!/bin/bash
    /home/root/name_of_compiled_code
    

    保存して実行権限を付与する

    chmod u+x /usr/bin/scriptname.sh
    
  3. サービスを作成する

    nano /lib/systemd/scriptname.service
    
  4. 必要に応じて上記のファイルを編集して、ネットワークなどのさまざまな機能を呼び出します。コードがその特定のサービスを必要とする場合にのみ、これらを有効にしてください。不要なものを無効にして、起動時間を短縮します。

    [Unit]
    Description=description of code
    After=syslog.target network.target
    [Service]
    Type=simple
    ExecStart=/usr/bin/scriptname.sh
    [Install]
    WantedBy=multi-user.target
    
  5. シンボリックリンクを作成して、デバイスにサービスの場所を知らせます。

    cd /etc/systemd/system/
    ln /lib/systemd/scriptname.service scriptname.service
    
  6. Systemdに構成ファイルをリロードさせ、サービスをすぐに開始し(サービスが正しく機能しているかどうかを確認するのに役立ちます)、コマンドラインで指定されたユニットファイルを有効にします。

    systemctl daemon-reload
    systemctl start scriptname.service
    systemctl enable scriptname.service
    
  7. BBBをすぐに再起動して、意図したとおりに実行されるかどうかを確認します。

    reboot
    

(すべてのクレジットは http://mybeagleboneblackfindings.blogspot.com/2013/10/running-script-on-beaglebone-black-boot.html に送られます)

12
Cory Biegel

7つの手順に従ってサービスを作成しましたが、機能しません。次に、シェルスクリプトコマンドを使用して、プログラムを/etc/rc.localに配置すると、機能しました。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

cd /home/my_program_directory
/home/my_program_directory/my_executable

exit 0
2
Jeff Pal