2

Всякий раз, когда я запускаю команду date через SSH, часовой пояс отображается по-разному, и если я захожу на сервер с SSH и если я запускаю ту же команду, он совершенно другой.

Запуск команды с SSH

>ssh root@server 'date'
[root@server]# date
Mon Sep 22 03:06:33 EDT 2014

Запуск команды после входа в систему по SSH.

[root@server ~]# date
Mon Sep 22 00:07:28 PDT 2014
[root@server ~]#

Часовой пояс моего второго случая правильный.

3 ответа3

4

В Unix часовой пояс для отдельного процесса можно установить, установив переменную среды TZ. Каждый процесс может иметь различное значение для TZ и, таким образом, отображать другой часовой пояс. Если TZ не установлен, то по умолчанию для всей системы.

Во втором примере вы запустили ssh, указав команду для запуска на удаленном сервере. Поэтому ssh настроил обычный интерактивный сеанс, и ваша оболочка в удаленной системе выполнила всю инициализацию, которую она выполняет для интерактивных сеансов.

В первом примере (ssh root@server 'date') вы сказали ssh выполнить определенную команду на удаленном хосте. В этом случае ssh запускает команду без TTY. Когда удаленный сеанс не имеет TTY, удаленный экземпляр вашей оболочки не выполняет всю инициализацию, которую он обычно делал бы для интерактивного сеанса. Поэтому он пропустил поиск некоторых файлов, таких как ваш .profile или общесистемный профиль.

Похоже, что один из файлов инициализации вашей оболочки устанавливает TZ в один из американских часовых поясов. Когда вы входите в систему в интерактивном режиме, происходит инициализация, и вы видите время в PDT. Когда вы входите не в интерактивном режиме, этот шаг пропускается, и вы получаете другой часовой пояс.

Вы можете установить часовой пояс, когда команды выполняются неинтерактивно:

ssh user@host 'TZ=US/Pacific date'

Или вы можете заставить ssh выделить TTY, что должно заставить вашу удаленную оболочку выполнить дополнительную инициализацию:

ssh -t user@host 'date'

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

3

Неправильный TZ, вероятно, установлен через .profile , .bash_profile или bashrc , таким образом, переопределяя настройки TZ для всей машины в /etc/timezone

-2

Часовой пояс зависит от клиента по дизайну. Представьте, что многие клиенты через глобус обращаются к одному и тому же серверу - они должны видеть разное время и часовые пояса.

Поэтому проверьте настройки ваших клиентов, на стороне клиента.

ОБНОВИТЬ

Ваше время на обоих компьютерах должно быть ПРАВИЛЬНЫМ. Правильно означает, что компьютер может определить время UTC. Т.е. либо системные часы должны быть в формате UTC, либо это должен быть другой часовой пояс, но компьютер должен знать, какой это часовой пояс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .