MuadDib Posted August 18, 2011 Share Posted August 18, 2011 Разрабатываемый для UC-7112 софт использует функции POSIX для работы со временем. Стандартное время UNIX, возвращаемое функцией time(), будет использоваться в качестве метки времени. При этом, хотелось бы, чтобы аппаратные часы компьютера были установлены на локальное время, а не на UTC. Показания аппаратных часов в процессе инициализации системы считываются строкой "hwclock -s" в файле /etc/rc. Если добавить перед этой строкой "export TZ=NOVT-7" показания часов, как и ожидается, интерпретируются как локальное время. Время UTC и локальное время как положено отличаются на 7 часов. Проблема заключается в том, что переменная TZ, несмотря на установку значения в /etc/rc, остается неопределенной в консольном сеансе. Поэтому, если подать команду reboot из консоли, система считает, что локальным временем является UTC и переписывает значение аппаратных часов. То есть в моем случае reboot из консоли каждый раз сдвигает часы на 7 часов назад. Решением проблемы был бы некий способ установки переменной TZ для всех сеансов, включая консоль. Но сделать это не получается: переменные из /etc/rc не экспортируются, а то, что пишется в /etc/profile, влияет только на telnet-сеансы. Подскажите пожалуйста, можно ли установить значение переменной среды TZ по умолчанию для всех сеансов или каким-либо иным образом указать системе дефолтный часовой пояс. Link to comment
Komantsev Posted August 22, 2011 Share Posted August 22, 2011 Добрый день, А такое решение подойдёт? Link to comment
MuadDib Posted August 23, 2011 Author Share Posted August 23, 2011 /etc/localtime в изначальной конфигурации системы не существует. Файл был скопирован на UC-7112 в соответствии с рекомендациями, но система на это никак не отреагировала. Видимо, приведенные вами рекомендации относятся к полноценному варианту Linux (не uc). На форуме ucLinux мне уже попадалась информация, что система не поддерживает zoneinfo. В данной ветке рекомендуют использовать etc/profile для установки TZ, но, как я уже писал выше, это влияет только на telnet-сеанс. Была надежда, что есть более универсальное решение, но, видимо, ничего больше сделать нельзя. Обидно. Придется устанавливать аппаратные часы по Гринвичу. Единственное, что утешает - отмененный перевод на зимнее время. Хоть немного меньше мороки с пересчетом :S Link to comment
Komantsev Posted August 26, 2011 Share Posted August 26, 2011 Добрый день, А вот так не пробовали делать? echo NOVT-7 > /etc/TZ Link to comment
MuadDib Posted August 29, 2011 Author Share Posted August 29, 2011 Добрый день,А вот так не пробовали делать? echo NOVT-7 > /etc/TZ Этот метод сработал. Спасибо огромное! Link to comment
Komantsev Posted August 29, 2011 Share Posted August 29, 2011 Спасибо за новости! Извините, что не додумались посоветовать Вам это сразу. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now