32ビットOSの2036(NTP)/2038(OS)問題まではまだ余裕はあるがソースコードがないなど根本的な対策が不可能なデバイスを抱えて頭の痛い方も多いのではと思う。そういうデバイス向けになんとか問題を凌げる対策を考えてみた。
ちなみに最新のOSでは対策済であるため2038年になってもすぐには落ちることはないようではあるが未対策のアプリなどにより負荷が高くなったりなど何かしらの問題が発生してしまうことは避けられない状況でもあるようだ。
なので2036年になったら年のみ2016年に日付を変更してしまうスクリプトを書いてみた。なんとも荒業ではあるがOSやアプリはそのままでいいのでお守りにはなるかもしれない。2036年以降の時刻はいい加減になってしまうが誤動作するよりはいいかも。(-_-;)
※の部分は、実行環境により変更する必要がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/sh sleep 600 while : do YEAR=$(date +%Y) if [ $YEAR -lt 2016 ]; then # already overflow ? date -s \"$(date '+2016-%m-%d %H:%M:%S')\" elif [ $YEAR -ge 2036 ]; then # 2036/2038 year problem # ※ disable time sync (NTP, chrony, ...) ### systemctl stop chronyd systemctl disable chronyd ########################################## date -s \"$(date '+2016-%m-%d %H:%M:%S')\" fi sleep 60 done |