現地時間を設定します。 dpkg-tzdataの再構成

現地時間を設定します。 dpkg-tzdataの再構成

私はこれを使って現地時間を構築します。

dpkg-reconfigure tzdata 

ncurses インターフェイスです。私はこれをプログラムする方法を探しています。ユーザーインターフェイスなしでncursesを実行する実際の方法はありますか?

シェルコマンドで現地時間を変更するには?

答え1

シェルコマンドでタイムゾーンを変更したいとします。

timedatectlあなたのシステムにありますか?

もしそうなら、

timedatectl status現在の設定が表示されます。

timedatectl list-timezones利用可能なタイムゾーンを表示します。

timedatectl set-timezone Antarctica/Mawson設定してください。

メモ:RTC が現地時間で構成されている場合、RTC 時間も更新されます。

答え2

ユーザーインターフェイスなしでncursesを実行する実際の方法はありますか?

echo Antarctica/Mawson >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata

はい、シェルコマンドを生成できます。

sh -c 'echo Antarctica/Mawson >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata'

:)

一つある抜け穴In tzdata:特定の値は次のように正規化されますdpkg-reconfigure

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

答え3

私が毎回取るアプローチは次のとおりです。

# /bin/ln -fs /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime

LinuxからBSDファミリまで、あらゆる場所でうまく機能します。

答え4

expect対話型コマンドがある場合は、常にプログラムを使用するオプションがあります。

#!/usr/bin/expect -f
set timeout 360
spawn dpkg-reconfigure tzdata

expect "Geographic area:"

send -- "2\r"

expect "city or region"

send -- "134\r"

これは標準出力で「expect」の文字列を見つけ、「send」の文字列を標準入力に送信します。

関連情報