LoginSignup
0
1

More than 1 year has passed since last update.

archlinuxを定期的に再起動する(録画中ならやめる)

Posted at

はじめに

この記事は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)

以上

関連記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1