地デジ録画サーバ(epgrec)自動起動・終了設定できたお
マジでlinuxとかよくわからんのですが、ついその気になっちゃって組み立ててしまった地デジ録画サーバ(epgrec on Ubuntu 10.04 on atom d510mo)。これ24時間つけとけばsambaとかbindとか使えて便利やん、と思って今までつけっぱなしにしていましたが、節電の時代ですから、録画時間になると自動で電源がついたり、終わると消したりしたくなりました。
ubuntuとepgrecの鉄板さから、ググったらそのものズバリがすぐ出てくると思ったのですが、思いの外見つからなかったので、雰囲気英語と共に載せておきます。
地デジを録画して、録画したtsはwindowsからsambaで開いて視聴するような人向け。
#!/bin/bash # sort works well when LANG=C LANG=C # if nobody logged in. if [ `who|wc -l` -eq 0 ] ; then # if nobody are using samba. if [ `smbstatus -L|wc -l` -eq 2 ]; then # if no at jobs are runnning. if [ `atq|grep =|wc -l` -eq 0 ]; then # get nearest time which at scheduled. nearest=`atq|awk '{print $6,$3,$4,$5}'|\ sort -n -k 4|sort -k 1 -Mk 2 -k 3|\ sort -n -k 3|head -1|awk '{print $2,$3,$4,$1}'` # transform timestamp to seconds. wkuptime=`date -d "$nearest" +%s` # set secs to 3 minutes before. wkuptime=`expr $wkuptime - 180` # get present time. now=`date +%s` # if next recording will start after greater than 30 minutes later. if [ `expr $wkuptime - $now` -gt 1800 ]; then # initialize wakealarm. echo 0 > /sys/class/rtc/rtc0/wakealarm # set wakealarm. echo $wkuptime > /sys/class/rtc/rtc0/wakealarm # shutdown /sbin/shutdown -h now fi fi fi fi
ていうか電源切っちゃったらwolやbiosの「何時に起動」ってオプションを使わないことには、自動的に起動できないんだと思ってました。ACPIさんマジパネェす。このスクリプトをsudo crontab -eで*/30 * * * * /home/foo/bar.shすれば、以下のように動きます。
- 誰かログインしてる人いんの?
- あ、いない? じゃあsamba使ってる人は?
- マジかよ、いないの? えっ、じゃあ俺今録画してるんだっけ……?
- あ、してないわ。えーっと次の録画はこの時間だから……
- 今から30分以内には録画しなくていいな。じゃあ暇だから俺寝てるわ
時間がUTCとかJSTとかあるそうですが、特に気にしないでうまく動きました。僕のところはマザボはUTCでOSはJSTでやってるみたいです。atqがJSTで出力して、それをJSTで受け取ったdateがunix timeに変換して、wakealarmにはunix timeを投げる、という風になってます。
参考文献
#追記
そういえばこれだといつ番組表更新するんだろう……。
#追記
やられた……。3日と10日、どっちのほうが小さい値かな? 3と10なら、3のほうが小さいだろう、と思いがちですが、sortコマンドでは-nオプションでそのフィールドが数値であることを指定しないと、3と"1"0を比較して、10のほうが小さくソートされてしまうんですね。たまにそういう仕様のソフトとかあるよね。いちいちファイル名を01,02,...って書き換えないとだめなやつ。
そういうわけで書き換えました。
sort -k 1 -k 2 -n -k 3
まず1番目のフィールドでソート、値が同じであれば2番目、それでも同じなら3番目のフィールドを数値として見てソート。年、月、日付の順でソートできます。こうしてまた録画失敗してしまったのでした。
ちなみに番組表の更新に関しては、毎時間getepgを実行することでなんか上手くいってます。録画するだけではなく、視聴する時間もあるわけなので、その間に更新してくれてるんでしょう。まあここも何とかしたほうがいいですよね。
#追記 12/07/15
やっぱりソートがうまくいかないタイミングがあるので、気合でソートしまくる方針にしました。