

プログラム初心者です。  
Raspberry Pi 3 model
Bを使って、シャットダウン時・リブート時に簡単なスクリプトを実行したいのですが、スクリプトが実行された形跡がなく嵌っています。スクリプトの内容は、testという文字列をファイルに書き出すだけのスクリプトです。期待値は、シャットダウンあるいはリブートをしたら、ログファイルが生成されるというのが期待値なのですが、ファイルが生成されていないため、スクリプトが実行されていないと判断しました。ちなみに、ターミナルを起動し、以下のスクリプトを実行した場合は、所望の動作をいたしました。サービスの登録の仕方に問題があるのではと考えています。

ディストリビューションは、Ubuntu 16.04です。

スクリプトの内容は、以下の通りです。  
以下のリンクを参考にしました。  
<http://qiita.com/toshihirock/items/4c8c3987b8837989d6fb>

[code]

    #!/bin/bash
    name="test"
    lock_file="/var/lock/subsys/${name}"
    log_file="/var/log/${name}.log"
    echo ${name} >> ${log_file}
    
    start(){
        touch ${lock_file}
        #他のスクリプトを呼び出す処理(現在はコメントアウト中)
    }
    stop(){
        rm -f ${lock_file}
    }
    case "${1}" in
        start)
            start
            ;;
        stop)
            stop
            ;;
         *)
            echo "Usage: ${0} {start|stop|restart}"
         ;;
    esac
    
[/code]

やったことは以下の通りです。  
・/etc/init.d/の中に上記スクリプト(test)を置きました。  
・/etc/rc0.d/と/etc/rc6.d/の中にシンボリックリンク(S00test)を作成しました。  
・test/S00testの権限は実行可能状態になっています。  
・sysv-rc-confコマンドでtestをランレベル0と6でスタートするようにしました。  
>$ sysv-rc-conf --list  
test 0:on 6:on  
・さらに、/var/lock/subsys/の中にもtestを置きました。

ちゃんと理解できておらずお恥ずかしい限りです。  
もし、同じような経験をされた方、解決策をご教示いただけませんでしょうか。  
よろしくお願いいたします。


CC BY-SA 3.0
2017-08-08T23:39:36.150
37035
2023-10-24T02:01:10.133
24796
question
linux ubuntu raspberry-pi
raspberry piでシャットダウン時、リブート時にスクリプトを実行したい。


> さらに、/var/lock/subsys/の中にもtestを置きました。

/var/lock/subsys/{$name}はスクリプトが起動していることを示すロックファイルですので、これが存在するとすでにスクリプトが実行中とみなされ起動されません。

[code]

    start(){
        touch ${lock_file}
    
[/code]

ここで作成しているので自分で作成する必要はありません。


CC BY-SA 3.0
2017-08-09T01:26:49.270
37038
2017-08-09T01:26:49.270
5793
37035
answer


crontab に@rebootを使ってスクリプトを実行するようにしてみてはいかがでしょうか。

[code]

    $ echo '@reboot /path/to/script' | crontab
    $ crontab -l
    @reboot /path/to/script
    
    Debian CRONTAB(5)
    -----
    string         meaning
    ------         -------
    @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 * * * *".
    
[/code]

参考資料  
<https://manpages.debian.org/stretch/manpages-ja/crontab.5.ja.html>


CC BY-SA 4.0
2018-12-23T07:11:46.817
51456
2018-12-23T08:31:35.620
2018-12-23T08:31:35.620
19110
15346
37035
answer