ラズパイのシステムクロック(時刻)と ntpd の関係を ntpq -c rv で見ると、次のフローチャートが見えた。
このフローチャートはLucidchartのフリー版で作成。
ラズパイに繋がるネットワークを切った(ルーターのWiFi機能を無効)状態で、コマンド watch ntpq -c rv と watch ntpq -p を同時観察。この観察をしたままネットワークに接続させたら、上記のフローチャートが見えて来ました。
“sync_ntp” “sync_unspec” “no_sys_peer” はコマンド ntpq -c rv 実行時に表示された1行目に現れる文字列です。
フローチャート内の N M S は自作中のラズパイ7桁時計に関する印です。
このフローチャートは、ntpdがSTEPモードにより時刻補正実施の有無を知るプログラムを作る為にあります。
ラズパイはハードウェアクロックが無いので、再起動しただけで時刻が遅れてしまいます。その遅れをntpdが起動後速やかにSTEP補正してくれます。しかし、ネットワークに接続出来なければ、いつになっても時刻は補正されないので、私が今作成中のラズパイ7桁時計は、そのような状況であった時、時刻が正確では無い事を知らせる為に表示を変えます。
↓ これはntpdのログ画像です。赤線で囲んだ所にSTEP補正された記録があります。このように再起動しただけで約14秒も遅れたようです。
このようにログを参照出来ればSTEP補正を知る事が出来るのですが、素人プログラマーの私には、ログを常に監視するコードが書けません。
そこで辿り着いたのが、ntpq -c rv だったのです。