はじめに
この記事はarchlinuxを定期的に再起動(EPGStationが録画中ならやめる様に)する手順紹介(備忘録)です。
※元作業の関係上、基本的にルートユーザーで作業を行っています。
やりたいこと
- (背景)archlinuxにEPGStation(録画ソフト)を導入している
- PCを起動しっぱなしにしていると何かとトラブルが起きるため、週に1度再起動させたい
- 再起動時にEPGStationが録画中だったら再起動を待ってほしい
録画中か否かの情報取得
調査した結果以下のコマンドで録画中かどうかの判別ができることがわかりました。
録画中だとrecords
の中にズラズラと情報が入っていて、録画中でなければrecords
が空っぽです。
curl http://localhost:8888/api/recording?isHalfWidth=true
定期的に再起動させる設定をする
jq、cronのインストール
curlの返り値はJSON
形式なので、JSON
を扱いやすくするためにjq
コマンドをインストールします。
また、「定期実行といえばcron
!」ということでcron
もインストールします。
# jqのインストール
pacman -S --noconfirm jq
# cronのインストール
pacman -S --noconfirm cronie
# cronの有効化・起動
systemctl enable cronie
systemctl start cronie
systemctl status cronie
cronの設定
毎週月曜日の朝3:37に再起動する様に設定しました。
設定時間が半端な理由は以下の2つです。
「この時間帯の番組を録画することは少ないだろう」
「この半端な時間が番組の切れ目になることは少ないだろう」
# 現在の設定確認(何もないはず)
crontab -l
# 週1再起動の設定
## 月曜日の朝3:37に再起動をする
### もしそのタイミングで録画中の場合は、その後5分ごとに様子を見て録画が終わっていたら再起動をする
crontab -e
>>> 以下の内容を記入する(操作はvi)
37 3 * * 1 while true; do if [[ $(curl http://localhost:8888/api/recording?isHalfWidth=true 2>/dev/null | jq '.records | length') -eq 0 ]]; then reboot; break; else sleep 300; fi done
<<< 以下の内容を記入する(操作はvi)
以上