プロが教える店舗&オフィスのセキュリティ対策術

下記のスクリプトを実行した結果の質問です。

『sudo rtcwake -l -m no -t $DSR』を実行しますと、$DSRで指定する時刻に
9時間進んだ時刻にwakeする表示となります。
尚、分(minute)は、指定の分が表示されます。

rtcwake: wakeup using /dev/rtc0 at Tue Sep 26 04:02:17 2017 <ーー9時間進んだ表示となる

Q1)この件に関してコメント頂けますと大変有り難いです。
尚、この様な現象は、ubuntu17.04を再インストールする前は於きませんでした。

スクリプト=========
#!/bin/bash
echo [sleepWake_test]
#Argument check
if [ $# -lt 2 ]; then
echo "Usage: suspend_until HH:MM"
exit
else
echo "Argument's number($#) is OK"
fi
echo "Argument $#, $1, $2, $3" #時間、分の確認のための表示


DSR=`date +%s --date "$1 hours $2 minutes"` #desired h:m #1
NOW=`date +%s` #now h:m
echo DSR=$DSR
echo NOW=$NOW

sudo killall rtcwake #kill rtcwake if already running

DIFF=`expr $DSR - $NOW`
echo [DSR-NOW=$DIFF sec]
sudo rtcwake -l -m no -t $DSR #表示が9時間進んだ表示となる

以上、宜しくお願いします。

A 回答 (1件)

日本で使っていて、時刻が9時間違う、となれば、まずは、UTC(協定世界時 ≒ GMT グリニッジ標準時) と日本標準時との時差を考えるべきでしょう。



ハードウェアの時計がUTCに設定されていたら、表示の際には
 ハードウェア時刻(UTC)→ +9時間 →ローカル時刻(JST)
JSTだったら
 ハードウェア時刻(JST)→ +0時間 →ローカル時刻(JST)

http://manpages.ubuntu.com/manpages/zesty/man8/r …
によれば、
-l は「ハードウェア時刻」が ローカル時刻になっている、と見做す、という設定です。

-lの時は
rtcwakeで設定したいローカル時刻(JST)→ +0時間 → ハードウェア時刻(JST)
 (読み出し)→ +0時間 →ローカル時刻(JST)

-uの時は
rtcwakeで設定したいローカル時刻(JST)→ -9時間 → ハードウェア時刻(UTC)
 (読み出し)→ +9時間 →ローカル時刻(JST)

となり、読み書きで時刻が変わりません。
これが、本当はハードウェア時刻がUTCなのに -l を指定すると
rtcwakeで設定したいローカル時刻(JST)→ +0時間 → ハードウェア時刻(JSTのつもりが実際はUTC)
 (読み出し) → +9時間 →ローカル時刻(JST)

となり、9時間進んでしまうという現象と合致します。



再インストールのときに、ハードウェアの設定を変えてしまったか、
再インストールの前は、ローカル時刻をJSTではなくUTCに設定していたか、
ではないか、と思われます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!