私はこれを使ってローカルタイムを設定しています:
dpkg-reconfigure tzdata
Ncursesインターフェースです。これをプログラミングする方法を探しています。ユーザーncursesインターフェイスなしの本当の方法はありますか?
1つのシェルコマンドで現地時間を変更する方法
1つのシェルコマンドでタイムゾーンを変更することを想定しています。
システムにtimedatectl
がありますか?
その場合:
timedatectl status
は現在の設定を表示します。
timedatectl list-timezones
は、利用可能なタイムゾーンを示します。
timedatectl set-timezone Antarctica/Mawson
設定します。
注: RTCが現地時間に設定されている場合、これはRTC時間も更新します。
ユーザーncursesインターフェイスなしの本当の方法はありますか?
echo Antarctica/Mawson >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
はい、1つのシェルコマンドを作成できます。
sh -c 'echo Antarctica/Mawson >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata'
:)
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'
私がいつも取っている方法:
# /bin/ln -fs /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime
LinuxからBSDファミリーまで、かなりどこでも動作します。
ここでの答えはどれも私にとってうまくいきませんでした。私のために働いたのは走っていました:
printf "%s\n" \
"tzdata tzdata/Areas select America" \
"tzdata tzdata/Zones/America select New_York" \
| debconf-set-selections
これを実行した後、トリガーできるようになったとき
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
また、事前に読み込まれた設定に基づいて、正しいタイムゾーンを自動的に使用します。