Tvheadend(またはvdr)が現在録画しているときにシャットダウン/スタンバイを防ぐ方法を探しています。
私がこれまでに見つけたもの:
rsnapshotの実行中にシャットダウンを防ぐ :tvheadendにルート権限が必要であり、参照されるリンクが機能しないバリアントを提供しているため、これは気に入らない。
TVHeadend Wakup :ウェイクアップ時間の設定は正常に機能します。ただし、pm-suspendは、KDEセッションがアクティブであるかどうかをチェックせず、即座に中断します。
シャットダウンに管理者パスワードを要求しないようにするにはどうすればよいですか? :非常に特殊な場合にのみ機能します:ユーザーがログインしているかどうかを確認します
2つの解決策があります。
これら2つのバリアントに関するドキュメントは見つかりません。
本当に簡単な解決策を見つけました!
ファイルを作成/etc/pm/sleep.d/70-check-recordings
。
このファイルで、記録が現在アクティブかどうかを確認します。はいの場合、exit 1
。それでおしまい。中断は中止されます。
私のスクリプトは次のように見えます。 this at tvheadend に基づいています。
$ cat /etc/pm/sleep.d/00-check-recordings
#!/bin/bash
#
# this script sets ACPI Wakeup alarm and stops standby if a recording is active
# safe_margin - minutes to start up system before the earliest timer
# bootup system x sec. before timer
safe_margin=60
# modify if different location for tvheadend dvr/log path
cd ~hts/.hts/tvheadend/dvr/log
######################
start_date=0
stop_date=0
current_date=`date +%s`
for i in $( ls ); do
tmp_start=`cat $i | grep '"start":' | cut -f 2 -d " " | cut -f 1 -d ","`
tmp_stop=`cat $i | grep '"stop":' | cut -f 2 -d " " | cut -f 1 -d ","`
# logger "$0: $i from $(date -d @$tmp_start) to $(date -d @$tmp_stop)"
start_extra=`cat $i | grep '"start_extra":' | cut -f 2 -d " " | cut -f 1 -d ","`
stop_extra=`cat $i | grep '"stop_extra":' | cut -f 2 -d " " | cut -f 1 -d ","`
let tmp_start=$tmp_start-$start_extra*60
let tmp_stop=$tmp_stop+$stop_extra*60
# logger "$0: $i from $(date -d @$tmp_start) to $(date -d @$tmp_stop)"
# if recording is active, immediately stop suspend
# tmp_stop > now and tmp_start < now
if [ $((tmp_stop)) -gt $((current_date)) -a $((tmp_start)) -lt $((current_date)) ]; then
name=`grep -h -A 1 title $i | grep -v title | sed 's/.*: "\(.*\)"$/\1/'`
logger "$0: Currently RECORDING $name. No Suspend until $(date -d @$tmp_stop!)"
exit 1;
fi
# only check future recordings
# tmp_stop > now and tmp_start > now
if [ $((tmp_stop)) -gt $((current_date)) -a $((tmp_start)) -gt $((current_date)) ]; then
# take lower value (tmp_start or start_date)
# (start_date = 0) or (tmp_start < start_date)
if [ $((start_date)) -eq 0 -o $((tmp_start)) -lt $((start_date)) ]; then
start_date=$tmp_start
stop_date=$tmp_stop
name=`grep -h -A 1 title $i | grep -v title | sed 's/.*: "\(.*\)"$/\1/'`
fi
fi
done
wake_date=$((start_date-safe_margin))
# set up wakeup alarm
if [ $((start_date)) -ne 0 ]; then
logger "$0: Set Wakealarm for $name to $(date -d @$wake_date)"
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo $wake_date > /sys/class/rtc/rtc0/wakealarm
fi
タイムアウト後のスタンバイを処理するようにKDEをセットアップします。記録がアクティブな場合、KDEスタンバイは上記のスクリプトによって中止されます。
MythTVドキュメントのthis も参照してください。
kaffeinety を使用します。特定のアプリケーションの実行中に電源管理アクションがトリガーされるのを防ぐアプリケーションです。その後、system settings
-> power management
およびアプリケーションをリストに追加します。
Tvheadendアクティビティに基づいてシステムをシャットダウンおよびウェイクアップするスクリプトを作成しました。 Tvheadendがアクティブな間は、システムを一時停止しません。 GitHub で見つけることができます。