Установка часового пояса с терминала
Я хочу изменить часовой пояс системных часов с терминала.
Это может быть сделано с
tzselect
"который открывает графический интерфейс в терминале"
или же
sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
"который установит gmt"
Но есть ли способ установить часовой пояс только со смещением, т.е.-1 или +5 и т. Д.?
Мне нужно сделать это, когда я пишу приложение для настройки временных смещений или отчетов, и единственная информация, которую я имею, - это IP-адрес пользователя. Я могу использовать веб-приложение, чтобы найти местоположение IP, но тогда мне нужно установить смещение, которое было бы легко, если бы я мог просто получить смещение местоположения, но если мне нужно найти зону и город, это было бы настоящей болью,
Если кто-нибудь знает ответ на вопрос, как установить системные часы с +/- часом, было бы здорово.
8 ответов
Чтобы изменить часовой пояс с терминала, просто нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:
sudo dpkg-reconfigure tzdata
После открытия просто следуйте инструкциям на экране, чтобы изменить часовой пояс.
Вы также можете использовать новый timedatectl
установить время в 14.04.
sudo timedatectl set-timezone America/New_York
Я понимаю, что этот поток немного устарел, но я искал лучшее решение, потому что мне нужно было автоматически установить часовой пояс в виртуальной машине после того, как пользователь загрузит его с нашего веб-сайта и развернет его. Вот чем я закончил:
echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` && timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"
Это будет запрашивать geoip.ubuntu.com с сервера, как только он будет запущен в новой сети (мой скрипт сначала проверяет подключение), а затем устанавливает часовой пояс сервера на основе ответа.
"Wget -q0 -" указывает wget выводить только результаты в стандартный вывод, который затем передается в переменную $tz.
Надеюсь, это поможет кому-то!
Вы можете использовать GMT±X файлы в /usr/share/zoneinfo/Etc
,
sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime
TL;DR /etc/localtime
символическая ссылка, указывающая на файл в /usr/share/zoneinfo/Continent/City
, Изменяя, где он указывает, вы можете изменить свой часовой пояс.
Чтобы изменить часовой пояс, удалите /etc/localtime
и назначьте символическую ссылку на нужный вам город. Например, ls -l /etc/localtime
сообщает, что этот файл указывает на /usr/share/zoneinfo/America/Denver
, Чтобы изменить его на Нью-Йорк, я делаю
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
- Подождите минуту, чтобы мои часы были обновлены
На скриншоте ниже показаны шаги и подтверждение от timedatectl
Самый простой способ обновить часовой пояс - это использовать sudo dpkg-reconfigure tzdata
, Но это не так легко написано.
Если вы хотите установить часовой пояс явно с помощью скрипта (например, для настройки виртуальной машины), вот рецепт:
Установите переменную для часового пояса, который вы хотите, например, один из
tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6
Допустимые значения - это каталоги и имена файлов в /usr/share/zoneinfo
,
Тогда просто
sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone
Обратите внимание, что оба /etc/localtime
а также /etc/timezone
должен быть последовательным.
Возможно, теперь перезагрузитесь, чтобы обновить все ваши сервисы (например, cron).
Вот метод, который я использую, который ориентирован на США, так как мне не нужно беспокоиться о неамериканских часовых поясах.
Если мне нужно определить текущий часовой пояс, я либо делаю:
cat /etc/timezone
или же
sudo hwclock --show
Я тогда делаю:
timedatectl set-timezone <_designation_>
где <_designation_>
является одним из следующих:
US / Eastern
США /Central
США /Mountain
США /Pacific
США / Аляска
США / Алеутской
США / Аризона
США / Восточная Индиана
США /Hawaii
США / Индиан Старка
США / Мичиган
США /Pacific-New
США / Самоа
НАПРИМЕР:
timedatectl set-timezone US/Eastern
Другие обозначения часовых поясов можно найти здесь: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Вы не сможете сделать это, если не выберете файл часового пояса, который хотите соответствовать каждому смещению часового пояса.
В некоторых ответах предлагалось использовать файлы в /usr/share/zoneinfo/Etc, но проблема в том, что они не зависят от летнего времени.
Таким образом, если вы не выберете какую-либо конфигурацию часового пояса для соответствия каждому смещению или не будете заботиться о летнем времени, вы не сможете сделать это вообще.