Linuxでハードウェアクロックをプログラムでどのように設定しますか?

StackOverflow https://stackoverflow.com/questions/202116

質問

Linuxは、システム時間を設定するstime(2)呼び出しを提供します。ただし、これによりシステムの時刻が更新されますが、BIOSハードウェアクロックは新しいシステム時刻に一致するようには設定されません。

Linuxシステムは通常、ハードウェアクロックをシャットダウン時および定期的な間隔でシステム時間と同期します。ただし、これらの自動同期のいずれかの前にマシンの電源を入れ直した場合、マシンの再起動時に時間が不正確になります。

システム時刻を設定するときにハードウェアクロックが更新されるようにするにはどうすればよいですか

役に立ちましたか?

解決

詳細についてはrtcのマンページをご覧ください。ただし、rootとしてログインしている場合は、次のようになります。

    struct       rtc_time {
        int         tm_sec;      
        int         tm_min;      
        int         tm_hour;     
        int         tm_mday;     
        int         tm_mon;      
        int         tm_year;     
        int         tm_wday; /* unused */
        int         tm_yday; /* unused */
        int         tm_isdst;/* unused */
    };

struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);

他のヒント

stime()を呼び出した後、これを行います:

system("/sbin/hwclock --systohc");

詳細については、hwclock(8)のマニュアルページを参照してください。

hwclockのソースコードを読むことから始めます。

また、ハードウェアクロックが特定のポイントにのみ正確であることを指摘したいと思います(1日に数秒のゆるみ/増加するシステムを見てきました)。

タイムサーバーに対してクロックを同期するために、ネットワークタイムデーモンを設定することを検討しましたか?

確かに、この同期はデーモンが起動するまで行われないため、ハードウェアクロックを同期させることは、電源投入からタイムデーモンがタイムサーバーと同期するまでの間に役立ちます。

テキストエディターがkubuntuと異なる場合(kateはエディターのデフォルトです)、ターミナルの sudo コマンドで独自のものを使用します。

  1. ターミナルを実行
  2. このコマンドをコピーして貼り付けます sudo kate / etc / default / rcS を押す Enter
  3. ユーザーパスワード(ログインパスワード)を入力し、 Enter
  4. を押します。
  5. デスクトップでテキストエディターが開きます
  6. UTC = yes UTC = no に変更します
  7. (テキストエディタのタブバーの上部にある)保存をクリックします
  8. 再起動
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top