Почему вывод команды "date" в z/OS USS отличается от TSO TIME?

Команда "дата" на USS говорит:

Wed Jan 22 17:51:30 EST 2014

Через пару секунд команда TSO TIME сообщает:

IKJ56650I TIME-04:51:58 PM. CPU-00:00:02 SERVICE-196896 SESSION-07:08:30 JANUARY 22,2014

(Существует разница в часовом поясе на один час.) TSO TIME отслеживает, через глазное яблоко, очень близко ко времени в записях системного журнала. Есть идеи, почему команда date может быть отключена на 28 секунд?

Благодарю.

1 ответ

Разница связана с обработкой високосных секунд. Приложения, которые просто обращаются к аппаратным часам напрямую (инструкции STCK/STCKE), часто забывают о високосных секундах, поэтому они отключаются примерно на 30 секунд. Более умные приложения используют процедуры преобразования системного времени, которые автоматически учитывают дополнительные секунды. Вот пример того, как это происходит: http://www-01.ibm.com/support/docview.wss?uid=isg1OA41950

Сказав это, POSIX или Single Unix Specification (которой придерживаются z/OS UNIX Services) могут фактически определять поведение команды date. Вот что говорит SUS в разделе "Секунды с эпохи":

Значение, которое приблизительно соответствует количеству секунд, прошедших с начала эпохи... Как указано в секундах с начала эпохи, каждый день должен составлять ровно 86400 секунд.

Насколько я понимаю, комментарий о том, что каждый день имеет ровно 86400 секунд, говорит о том, что спецификация UNIX намеренно не хочет подсчитывать дополнительные секунды. Если это так, то IBM просто следует букве закона относительно того, как отображается время.

Другие вопросы по тегам