私はこれを使って現地時間を構築します。
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」の文字列を標準入力に送信します。