Как программно установить аппаратные часы в Linux?
Linux предоставляет вызов stime(2) для установки системного времени. Однако, хотя это обновит время системы, он не устанавливает аппаратные часы BIOS в соответствии с новым системным временем.
системы Linux обычно синхронизируют аппаратные часы с системным временем при выключении и с периодическими интервалами. Однако, если машина получает циклическое питание до одной из этих автоматических синхронизаций, время будет неправильным при перезапуске машины.
Как вы гарантируете, что аппаратные часы обновляются, когда вы устанавливаете системное время?
5 ответов
проверить РУЦ man-страницы для деталей, но если вы вошли в систему как 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).
Я также хотел бы отметить, что аппаратные часы точны только до точки (я видел системы, которые будут терять/получать пару секунд в день).
вы рассматривали возможность настройки демона сетевого времени для синхронизации часов с сервером времени?
по общему признанию, эта синхронизация не происходит до тех пор, пока демон не начнет, поэтому синхронизация ваших аппаратных часов также помогает между питанием и моментом, когда демон синхронизируется со временем сервер.
если текстовый редактор отличается от kubuntu (kate по умолчанию в Редакторе), используйте свой собственный с в терминале.
- запустить терминал
- скопируйте и вставьте эту команду
sudo kate /etc/default/rcS
пресс Enter - введите пароль пользователя (ваш пароль для входа) нажмите Enter
- текстовый редактор откроется на рабочем столе
- изменить строку
UTC=yes
toUTC=no
- и нажать "Сохранить" (вверху панели вкладок текстового редактора)
- перезагрузка