Встановлення часової зони за допомогою автоматизованого сценарію


20

Я пишу сценарії для автоматичного налаштування нових програм slicehost. У ідеальному світі, після того, як я розпочав сценарій, він би просто запустився, без уваги з боку мене. Мені це вдалося, за одним винятком.

Як встановити часовий пояс, у постійному (перезавантажити пережити) та розумному (налаштувати на стандартний та літній час, щоб не просто форсувати дату) ... спосіб, який не вимагає від мене введення?

В даний час я використовую

 dpkg-reconfigure tzdata

Схоже, це ніяк не може примусити параметри до нього. Це вимагає введення користувачем.


EDIT: Я тут редагую, а не коментую, оскільки коментарі не дозволяють блокувати коди.

Ось фактичний код, який я закінчив, на основі коментаря Рудодога нижче. Я також помітив, що це не оновлює / etc / timezone. Я не впевнений, хто це використовує, але у випадку, якщо хтось це зробить, я також встановлюю це.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time

Відповіді:


18

Ви повинні мати можливість це зробити

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Замініть відповідний часовий пояс у вищевказаній команді.


1
вам слід подумати, що не копіювати
Zypher

1
Він використовує Debian. dpkg-reconfigure tzdataробить копію, а не симпосилання. Я вважаю, що обґрунтування полягає в тому, що / usr / share може не встановлюватися під час завантаження.
Рудедог

Згідно з технічним розділом сторінки вказівки tzconfig для Debian:> Робота, виконана tzconfig, насправді досить проста. Він просто оновлює посилання / etc / localtime, щоб вказати на правильний часовий пояс, встановлений у / usr / share / zoneinfo /.
brent

1
tzconfig застарілий на lenny на користь dpkg-переналаштування tzdata і насправді нічого не зробить. Ви можете переконатися, що він копіює замість символьних посилань, запустивши dpkg-переконфігуруйте tzdata і подивіться на результат.
Рудедог


3

Спробуйте це:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

Хоча код цінується, він завжди повинен мати супровідне пояснення. Це не повинно бути довгим, але очікується.
петерх

3
Цей метод, здається, не працює більше bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Пітер Гібсон

2

Оновіть /etc/localtimeсимвольне посилання, щоб вказати на правильний часовий пояс у/usr/share/zoneinfo/


Зауважте, що якщо ви використовуєте симпосилання, а ваш /usrвстановлений на окремому розділі, все, що починається перед /usrмонтажем, не матиме правильного часового поясу. Більшість дистрибутивів сьогодні, включаючи Debian, скопіюють, а не посилають.
Рудедог

1

Я сам наткнувся на це. Ось повний конфігурація, як це зробити правильно (це сукупність коментарів тут і цього питання ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org

0

tzdataдля відповіді на це запитання використовує debconf, тому вам потрібно його наробити. Існує кілька способів зробити це, найпростіший - заздалегідь встановити відповідь під час встановлення . Крім того, ви можете встановити базу даних за замовчуванням для використання debconf, див. На сторінці сторінки, debconf(7)як це зробити.


-2

Також переконайтеся, що ntpd встановлений та працює.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.