rc.localでのRubyスクリプトの自動実行

起動時にスクリプトを実行する方法としていくつか方法があるが、ここでは比較的簡単にできるrc.localにスクリプトを書く方法を試してみる。

rc.localを編集

中身は以下。

例えば

mubogt_server_v1_0_0.rb

exit 0の前に

と書いて

再起動

する。

スクリプトは
シェルスクリプトでもRubyやPythonの起動スクリプトでもいい。

ハマったのはデフォルトでrc.local内のスクリプトが自動起動しなかったこと

とすれば動くのでスクリプトには問題ない。

仕方ないので実行権を付与してみる。

これで動いた。

デフォルトで動かないのは、こう書いてあるので当然ですね。

rc.local内のスクリプト

は、起動するとIPアドレスを表示してくれます。

以前にjsayという日本語音声プログラムを試してみたので

Raspberry Piで音声合成

これを

と加えることで
起動時にIPアドレスをしゃべるようになりました。

参考
Raspberry PiをSHOUTcastクライアントにする

Raspberry Pi上でRubyファイルの実行

RUbyのファイルの1行名に

(シェバン)
があるが、それがあると
test.rbを実行するのにホームディレクトリ上で

でも起動するが、

だけで起動する。

ファイル名のtest.rbはtestでもいい。Linuxは拡張子で判断していない。

実際やってみると以下のことでハマった。

をなぜか1行目は空白で、2行名から書いていたので、ファイルが実行できず。1行名から書く。

ruby test.rbは、実際はファイルの位置を明記して

として実行する。最初にrubyと書かなくていい。
もしくは、

で実行。
.はホームディレクトリをさす。

test.rbではなく、./test.rbと打たないといけないのは
ホームディレクトリにパスが通っていないから。
本当はtest.rbと打ちたいですが
ホームディレクトリにパスを通すと危険だそうです。

参考
カレントディレクトリのプログラムを実行するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/040execcaprog.html

変数pathにカレントディレクトリを含める方法(あまりよくない)
http://www.not-enough.org/abe/manual/comm/command-path.html