Линукс, Часы и Время
Введение
В этом документе описано как вы можете установить ваши ч;асы в Линуксе, как установить временную зону (timezone), и другую связанную с этим информацию.
В вашем компьютере есть две разновидности часов; имеющие независимое питание и всегда запущенные (их называют по разному : ``аппаратные''(``hardware''), ``BIOS'', или ``CMOS'' часы), и другие которые определяются операционной системой запущенной на вашем компьютере (``системные'' часы). Аппаратные часы в основном используются для установки системный часов в момент загрузки ОС, , и с этого момента до момента перезагрузки ОС или выключения питания компьютера дляопределения времени будут использоваться системные часы.
В Линуксе вы имеете выбор : установить в аппаратных часах всемирное время (UTC/GMT) или локальное время (local time). Наилучший вариант : установить всемирное время (UTC), что позволит автоматически учитывать переход на зимнее/летнее время.Единственное неудобство от установление всемирного времени в аппаратных часах это в случае использования на этом-же компьютере другой ОС (в случае использования dual boot) которая счтает что аппаратные часы установленны в локальное время, поэтому время в этой систему будет неверным.
Установка временной зоны (timezone)
Временная зона под Линуксом устанавливается через символическую ссылку, из /etc/localtime
на файл из дирректории /usr/lib/zoneinfo
(или /usr/share/zoneinfo
), чем указывается в какой временной зоне вы находитесь. Например я живу в Новгороде (Московский часовой пояс) я должен сделать ссылку /etc/localtime
на файл /usr/lib/zoneinfo/Europe/Moscow
. Для этого даем команду:
ln -sf ../usr/share/zoneinfo/your/zone /etc/localtime
Замените your/zone
на соответствующую вашему месту расположения зону, например Europe/Moscow
или Australia/Perth
. Чтобы узнать какие временные зоны доступны посмотрите в дирректорию /usr/lib/zoneinfo
(или /usr/share/zoneinfo
).
Установка всемирного или локального времени
Когда линукс загружен, один из скриптов инициализации запускает программу /sbin/clock
(или /sbin/hwclock
в RedHat'e) чтобы установить системные часы в соответствии с аппаратными часами. clock
считает что аппаратные часы установленны на локальное время, чтобы указать что используется всемирное время используют ключь -u
. Далее для RedHat Линукса надо в скрипте/etc/sysconfig/clock
установить переменную ``UTC
'' в значение ``UTC=true'' или ``UTC=false''. Для случая Debian'a это переменная ``GMT
''в файле /etc/init.d/boot а значения ее : ``GMT="-u" '' в случае использования всемирного времени и или ``GMT="" '' в случае использования локального времени
Установка системных часов
Для установки системных часов в Линуксе, используется программа date
. Для примера установка текущего времени (системного!) и даты на 31 июля, 23:16,наберите ``date 07312316
'' (обратите внимание что время дано в 24-часовой записи) Если вы хотите изменить год то набиретие ``date 073123161998
''. Для установки секунд набирите ``date 07312316.30
'' или ``date 073123161998.30
''. Чтобы узнать системное время запустите date
без аргументов.
Установка аппаратных часов
Для установки аппаратных часов, установите сначало системное время а потом уже аппаратное используя программу ``/sbin/clock -w
'' (или``/sbin/clock -wu'' в случае использования всемирного времени).Чтобы узнать аппаратное время запустите clock
без параметров. Если аппаратные часы установлены в локальное время а вы хотите увидеть всемирное наберите ``/sbin/clock -u
''
Если какоето приложение (такое как date
) показывает верноевремя, но остальные нет то вы наверно неправильно установили информацию о временной зоне. Что-бы исправить ситуацию просто создайте правильную ссылку на нужную временную зону.
Итог
/etc/init.d/boot (/etc/sysconfig/clock)
устанавливает локальное или всемирное время используется- Символическая ссылка
/etc/localtime
на /usr/lib/zoneinfo/...
для установки временной зоны. - Запуск ``
date MMDDhhmm
'' для установки текущего системного времени - Запустите ``
/sbin/clock -w [-u]
'' для установки аппаратных часов
Небольшое замечание
Ядро Linux'а всегда хранит и вычесляет врямя как число сукунд прошедшихс полночи 1-го января 1970 года, в независимости от того установлены ваши часына локальное или всемирное время. Преобразование в локальное время производитсяв процессе запроса.
Поскольку колличество секунд с 1-го января 1970 года всемирного временисохраняется как знаковое 32-битное целое (это справедливо для Linux/Intel систем), ваши часы перестанут работать гдето в 2038 году. Linux неимеет проблеммы 2000-го года но имеет проблему 2038 года. К счачтью к тому времени все linux'ы будут запущены на 64-х разрядных системах. 64-х битное целое будит содержатьнаши часы приблизительно до 292271-миллионного года.
Обратите внимание на другие программы
rdate
- получает текущее время на удаленной машине; может бытьиспользовано для установки системного времени.xntpd
- похожа на rdate
, но она более аккуратнаи вы должны иметь постоянное сетево соединение. xntpd
запускается на продолжительный срок и следит за сетевыми задержками и "уходом"часов, для работы с ней используется программа (ntpdate
) устанавливающая текущее время точно так же как это делает rdate.
Дальнейшая информация
date(1)
hwclock(8)
/usr/doc/HOWTO/mini/Clock
Ругатся сюда. |
В начало |
Создан : Friday, 31-Jul-1998 14:14:08 MSD
Изменен : Thursday, 27-Aug-1998 17:17:00 MSD
|