この記事では、timedatectlを使用してタイムゾーンを変更する方法と、LinuxでNTP(ネットワークタイムプロトコル)を使用してシステムクロックをリモートサーバーと自動的に同期する方法について説明します。
timedatectlはsystemdの一部であり、システムクロックのさまざまな設定を変更できるコマンドラインユーティリティとして使用できます。
Linuxでtimedatectlを使用してタイムゾーンを変更する方法
:タイムゾーンを変更する前に、現在設定された時間帯(システム時間の設定に関するその他の情報も表示されている)を見つけるためにtimedatectlを使用してください
timedatectlを
これは、timedatectlのステータスと同じです。
出力例:
#timedatectl
現地時間:土2020-09-12 19:14:59 CST
世界時:土2020-09-12 11:14:59 UTC
RTC時間:土2020-09-12 11:14:59
タイムゾーン:アジア/ Shanghai(CST、+ 0800)
システムクロック同期:
NTPサービスなし:
ローカルTZの非アクティブ RTC:いいえ
ここで、システムで使用されるタイムゾーンの正確な名前がわかるように、使用可能なすべてのタイムゾーンをリストします(タイムゾーンを変更するコマンドに必要)
。timedatectl list-timezones
タイムゾーンのリストは膨大です。grepを使用して、特定の大陸のタイムゾーンまたは特定の国/州の首都のみを表示するようにフィルタリングできます。たとえば、可能なヨーロッパのタイムゾーンのみを表示します
。timedatectl list-timezones | grep Shanghai
アジア/上海
ここで、次のコマンドを使用して、Linux システムのタイムゾーンを設定します。
timedatectl set-timezone <timezone>
<timezone> timedatectl list-timezonesにリストされているタイムゾーンはどこですか?たとえば、LinuxシステムのタイムゾーンをAsia / Shanghaiに設定します。
timedatectl set-timezone Asia / Shanghai
このコマンドは、/ usr / share / zoneinfo /から選択したタイムゾーンへのシンボリックリンク/ etc / localtimeを作成します。このリンクを手動で作成して、同じ目的を達成することもできます。同じ例で、タイムゾーンをAsia / Shanghaiに設定するには、/ etc / localtimeをシンボリックリンク/ usr / share / zoneinfo / Asia / Shanghaiにする必要があります。
timedatectlを使用してシステムクロックをリモートサーバーと同期する方法(NTPを有効にする)
まず、timedatectlを使用して、ネットワーク時刻同期(NTP)サービスがアクティブかどうか、およびシステムクロックが同期されているかどうかを確認します
。timedatectl
Linux システムでNTP サービスを有効にするには、次のコマンドを使用します
。timedatectl set-ntp true
無効にしたい場合は、trueではなくfalseを使用してください。
NTPサービス(timesyncd、ntpd、Chrony、その他のサービスなど)がインストールされていない場合、このコマンドは失敗することに注意してください。ただし、多くの場合、timesyncdはデフォルトでインストールされます(たとえば、Ubuntu 16.04以降ではデフォルトでインストールされます)。
chronyやntpdなどのサービスを使用して変更を行う場合、systemd-timedatedは
再起動する前にこれらのコンテンツを表示しません。systemctl restart systemd-timedated
Ubuntu 18.04サーバーでは、systemd-timesyncdも再起動する必要があります(たとえば、この操作はUbuntu 19.04またはSolus OSシステムでは必要ありません)。そうしないと、システム時刻が同期されません。timesyncdも使用し、timedatectlがSystem clock synchronized:is noを表示する場合、NTPサービスがアクティブであると表示されていても、systemd-timesyncdを再起動できます
。systemctl restart systemd-timesyncd
また、デフォルトのsystemd timesyncdサービスを使用すると、timedatectlが提供するよりも多くの情報(使用したNTPタイムサーバーや、最後に実行された同期を示すログなど)を
確認できます。systemctlstatus systemd- timesyncd
出力例:
systemctl status systemd-timesyncd
●systemd-timesyncd.service-Network Time Synchronization
Loaded:loaded(/usr/lib/systemd/system/systemd-timesyncd.service; disable>
Active:active(running)since Sat 2020-09-12 19 :21:43 CST; 4秒前
ドキュメント:man:systemd-timesyncd.service(8)
メインPID:3518(systemd-timesyn)
ステータス: "タイムサーバーへの初期同期5.79.108.34:123(0.opensus>
タスク:2 (制限:4915)
メモリ:1.5M
CGroup:/system.slice/systemd-timesyncd.service└─3518/
usr / lib / systemd / systemd-timesyncd
9月12日19:21:42 localhost systemd [1]:ネットワーク時刻同期を開始しています...
9月12 19:21:43 localhost systemd [1]:ネットワーク時刻同期を開始しました。
9月12日19:21:43 localhost systemd-timesyncd [3518]:tへの初期同期
systemd 239以降(たとえば、systemd 237を使用するためUbuntu 18.04では機能しません)では、次のコマンドを使用してsystemd-timesyncdステータスtimedatectl show-timesyncを表示できます。
timedatectl show-timesync
FallbackNTPServers = 0.opensuse.pool.ntp.org 1.opensuse.pool.ntp.org 2.opensuse.pool.ntp.org 3.opensuse.pool.ntp.org
ServerName = 0.opensuse.pool。 ntp.org
ServerAddress = 5.79.108.34
RootDistanceMaxUSec = 5s
PollIntervalMinUSec = 32s
PollIntervalMaxUSec = 34min 8s
PollIntervalUSec = 1min 4s
NTPMessage = {Leap = 0、Version = 4、Mode = 4、Stratum = 2、Precision = -24、RootDelay = 17.211ms 、RootDispersion = 80.734ms、Reference = 8285010A、OriginateTimestamp = Sat 2020-09-12 19:22:15 CST、ReceiveTimestamp = Sat 2020-09-12 19:22:15 CST、TransmitTimestamp = Sat 2020-09-12 19: 22:15 CST、DestinationTimestamp = Sat 2020-09-12 19:22:16 CST、無視= no PacketCount = 2、ジッター= 3.787ms}
周波数= -6368726
和属性systemd-timesyncd使用timedatectl timesync-status:
timedatectl timesync-status
サーバー:5.79.108.34(0.opensuse.pool.ntp.org)
ポーリング間隔:1分4秒(分:32秒;最大34分8秒)
うるう:通常
バージョン: 4
ストラタム:2
リファレンス:8285010A
精度:1us(-24)
ルート距離:89.339ms(最大:5s)
オフセット:-10.021ms
遅延:358.105ms
ジッタ:3.787ms
パケット数:2
周波数:-97.179ppm
/etc/systemd/timesyncd.conf構成ファイルを編集して、ここに表示される設定を変更できます。たとえば、NTPサーバーを変更し(NTPプールプロジェクトが提供するサーバーを使用できます)、NTP行のコメントを外し、使用するサーバーをスペースで区切って追加します。設定ファイルを変更した後、systemd-timesyncdを再起動します
。systemctl restart systemd-timesyncd