しかし、ここで問題が。3月26日以降は各グループがさらに5分割されるので、正確さを期すためには、より細かい判定が必要になります。今のスクリプトでも使るでしょうが、停電対象から外れる空振りが多いはずです。
#!/bin/sh # arg1 or default(4) as blackout group grp=${1:-4} # args or default(0) as day of year offset offset=${2:-0} if [ $grp -lt 1 -o $grp -gt 5 -o $offset -lt 0 ] then echo usage $0 [1-5] [offset] exit 1 fi echo Group $grp doy=`date +%_j` doy=`expr $doy + $offset` pattern=`expr $doy - $grp` pattern=`expr $pattern % 5` case $pattern in 0) echo 9:20-13:00, 16:50-20:30 ;; 1) echo 6:20-10:00, 13:50-17:30 ;; 2) echo 18:20-22:00 ;; 3) echo 15:20-19:00 ;; 4) echo 12:20-16:00 ;; esac exit 0
実際にUbuntu Linuxの上で動かしているのは、こんなスクリプトです。
#!/bin/sh # arg1 or default(4) as blackout group grp=${1:-4} if [ $grp -lt 1 -o $grp -gt 5 ] then echo usage $0 [1-5] exit 1 fi doy=`date +%_j` hour=`date +%k` pattern=`expr $doy - $grp` pattern=`expr $pattern % 5` if [ $pattern -eq 0 -a $hour -eq 9 ] then # 9:20 shutdown -P now elif [ $pattern -eq 1 -a $hour -eq 6 ] then # 6:20 shutdown -P now elif [ $pattern -eq 2 -a $hour -eq 18 ] then # 18:20 shutdown -P now elif [ $pattern -eq 3 -a $hour -eq 15 ] then # 15:20 shutdown -P now elif [ $pattern -eq 4 -a $hour -eq 12 ] then # 12:20 shutdown -P now fi exit 0
これを、cronを使って毎日6,9,12,15,18時台の早い時刻に実行して、停電前であればshutdownを実行するようにしています。
13 6,9,12,15,18 * * * root /usr/local/bin/scheduledshutdown.sh
追記
実は我が家のあるエリアは計画停電の実施対象外である事が判明。道理で、今日まで一度も停電してません。
0 件のコメント:
コメントを投稿