駄目社員はむの日記

USO800 certified.

Raspberry Pi Zero で、世事に聡くなる (5)

自動実行するように設定しよう。

ひと通り動くようになったが、自分で実行するのは芸がないので、/home/pi/bbcrssnewsを自動的にOSに実行してもらおう。

Linuxで起動時などに自動実行する方法はいろいろある。

古くからのLinux使いだと、init.dだのrc.localだのcronだの・・・と思いだすところだろうけど、今日日のLinuxではsystemdを使うのがスマートらしいですよ?
というわけで、自分の勉強のためにもやってみた。

まず、サービスとして自動実行するserviceを記述する。

/etc/systemd/system/bbcnews.serviceファイルを管理者権限で作成。

[Unit]
Description=mogemoge
After=network.target


[Service]
ExecStart=/home/pi/bbcrssnews
WorkingDirectory=/home/pi
User=pi


[Install]
WantedBy=multi-user.target

  • [Unit]で「After=network.target」と記載すると、ネットワークにつながっているときに実行されるらしい。
  • [Service]の項にもし「Restart=always」を記載すると、実行終了後即座にリスタートがかかり延々実行されてしまう。ワンショットで終わるようコメントアウトしておいた。

実行テスト。

sudo systemctl start bbcnews.service

で、ちゃんと実行されることを確認する。
おわったらstopしておく。

続いて、timer部分を記述する。

/etc/systemd/system/bbcnews.timerファイルを管理者権限で作成。*.serviceと同じファイルにするのが流儀ですってよ。

[Unit]
Description=hogehoge
After=network.target


[Timer]
OnCalendar=*-*-* *:15,45


[Install]
WantedBy=timers.target

[Timer]は、毎時15分、45分に開始するように設定した。
BBCRSSから吐いたテキストを表示するのにザックリ10分ほどかかる。1時間に3-4回も表示しようものなら、うっとうしいのである。

こちらも実行テスト。

sudo systemctl start bbcnews.timer

でちゃんと実行することを確認出来たらstopし、

sudo systemctl enable bbcnews.timer

で自動実行を設定する。

大体完成。

あとは、液晶とPi Zeroを適当なケースに入れておき、Zeroがネットワークに勝手につながる環境においておけば、「起動直後ネットワークにつながり次第」+「毎時15分と45分」にBBC Worldのヘッドラインニュースが小窓(キャラクタ液晶)に流れる。


これで、一日中ニュースを読みまくれますね?(けっこうこれうざい)