インターネットを使用してLinuxでシステムのデフォルトのタイムゾーンを自動的に設定するには?私が知っている限り、NTPサーバーはタイムゾーンではなく時間のみを更新できます。タイムゾーンを変更できるサーバーはありますか?
答え1
私はしばらく前に次のプログラムを書いています。更新時間。
次のコマンドを実行すると、タイムゾーンを実際に設定せずに何に設定しているかを確認できますtzupdate -p
。
$ tzupdate -p
Europe/Malta
ルートとして実行して設定できますtzupdate
。
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
これは次のように達成されます。
- 現在のIPの場所を確認してください
- その場所のタイムゾーンを取得します。
/etc/localtime
そのタイムゾーンのzoneinfoファイルを指すようにシンボリックリンクを更新してください。
答え2
これは古いスレッドですが、タイムゾーンを自動的に変更しないkubuntu 1710とまだ関係しています。私はChris Downのtzupdateソリューションを使用していますが、システムがネットワーク(WiFiなど)に接続しようとしたときにこのソリューションがトリガーされることを確認しています。これはNetwork Managerを使用していると仮定します。
まず端末を開きます。
tzupdateのインストール
sudo apt install python-pip pip install -U tzupdate
次に、すべてのユーザーがアクセスできることを確認してください。
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/. sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
動作するかテスト
sudo tzupdate
それから私たちがすべきことは、すべてのユーザーがそれにアクセスできることを確認することです。
sudo su - tzupdate
rootとしてログインし、コマンドがタイムゾーンを変更したことを確認します。その後、ログアウトして通常のユーザーに戻ります。
exit
パスワードなしでsudoを使用してtzupdateを実行できることを確認してください。このコマンドは、バックグラウンドでこのコマンドを実行するネットワーク管理者でこのコマンドをトリガーするときの後続のステップに必要です。 sudoersファイルを編集するには、端末にこのコマンドを入力します。
sudo visudo
ファイルの末尾にこの行を追加します。
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
変更を保存するには、Ctrl-X、Y、ENTERを順に押します。
次に、ネットワーク接続の変更をトリガーした後(たとえば、WiFiに接続するとき)、NetworkManagerが常にこの関数を呼び出すことを確認します。これを行うには、Dispatcher.dフォルダにtzupdateというファイルを作成します。このファイルは単にsudo tzupdateを呼び出します。このファイルを実行するには実行権限が必要です。
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
NetworkManagerは通常、パスワードを要求するsudo呼び出し(sudo tzupdateなど)を実行します。
これを行うより良い方法があるかもしれません。つまり、接続が失われたときに呼び出すのではなく(上記のように)接続が確立されたときにのみNetworkManagerを呼び出すようにします。スクリプトを/etc/network/に入れてみました。 if-up .dしかしこれは私にはうまくいきません
Kubuntuでテストするには - ローカルタイムゾーンを別のタイムゾーンに変更します(タスクバーの「Date Plasma」に移動し、右クリックして「日付/時間調整」を選択し、タブから「タイムゾーン」を選択します)
Wi-Fiをオフにして再びオンにすると、Wi-Fiに接続すると約30秒待ってからタイムゾーンが正常に変更されることがわかります。
Wi-Fiではテストされておらず、ウェブページにパスワードが必要です。ネットワーク接続の最後に実行されるという事実は、ユーザーが資格情報を入力するのに十分な時間を提供することを願っています。それ以外の場合は追加の調整が必要になる場合があります(接続が存在することを確認し、インターネットに接続できることを確認して、しばらくお待ちください)。インターネットに接続できない場合)X秒後にY回再試行してください。
答え3
答え4
「タイムゾーンの更新」が何を意味するのかは不明です。
UnixとLinuxは、1970年1月1日00:00 UTC以降の時間を秒単位で記録します。したがって、Unixシステムクロックは時間帯に依存しません。 Linuxカーネルにはタイムゾーンがありません。ユーザースペースアプリケーションが時間を表示する場合にのみ、タイムゾーンは1970年以降の秒を解釈するために使用されます。通常、この解釈はCライブラリ関数を介して行われます。タイムゾーンは環境変数によって選択されますTZ
。タイムゾーンの定義(タイムゾーン名、UTCとのオフセット、夏時間が適用される日付、DST中のオフセットで構成されています)は、通常Linuxディストリビューションに「tzdata」パッケージとして含まれるGNU libcの一部です。 。したがって、タイムゾーン定義を更新することは、実行または同様のタスクの問題にすぎませapt-get upgrade
んyum update
。
一部のソフトウェア(Javaなど)には、個別に更新する必要がある独自のタイムゾーン定義ファイルがあります。
NTPは1900年1月1日UTC以降の秒数を記録します。。したがって、Unixカーネルと同様に、NTPにはタイムゾーンの概念はありません。