このチュートリアルでは、timedatectl、NTP、またはdateを使用してLinuxで日付と時刻を設定する手法に焦点を当てています。
システム管理者として、複数のサーバーにシステムの日付を設定するように求められる場合があります 。
構成が不適切であるか、タイムゾーンである可能性があります 正しく構成されていない可能性があります。
その結果、一部のプログラムは無効な日付をログに記録し、たとえば一部のサーバーログを検査できなくなる可能性があります。
このチュートリアルでは、現在の地理的なタイムゾーンに一致させるために、Linuxで日付を適切に設定する方法を見ていきます。
まず、systemd-timesyncオプションを指定したtimedatectlコマンドを確認します。 。次に、chronyのいずれかをインストールします またはNTP システムの日付を効率的に同期するためのサービス。
最後に、「日付」を使用します 」コマンドを使用して、システムの日付を静的に設定します。
違いについても説明します それらの方法と、できればどちらを使用したいかの間で。
前提条件
開始する前に、sudo権限が必要です。 いくつかのコマンドを実行するためにホスト上で。
これを確認するには、次のコマンドを実行できます
$ sudo -l
User user may run the following commands on localhost:
(ALL) ALL
アカウントにsudo権限がない場合は、このチュートリアルに従って、DebianベースのシステムまたはRed Hatベースのシステム(CentOS、RHEL)でsudoを取得してください
timedatectlを使用してLinuxで日付を設定
Debian/UbuntuでもRHEL/CentOSでも、日付の設定方法は同じです。
日付を設定するには、システムがNTPサーバーと同期するように、タイムゾーン情報を設定し、(オプションで)NTPプロトコルをアクティブ化する必要があります。 NTPプロトコル(ntpdまたはchronyを使用)を使用しない場合、システムはデフォルトでtimesyncサービスを使用します。
タイムゾーンの設定が不適切な場合は、タイムゾーン情報を変更する必要があります。
Linuxで現在のタイムゾーンを調べるには、timedatectlコマンドを実行します。
$ timedatectl
Local time: Wed 2019-10-16 22:26:23 UTC
Universal time: Wed 2019-10-16 22:26:23 UTC
RTC time: Wed 2019-10-16 22:26:24
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
systemd-timesyncd.service active: inactive
RTC in local TZ: no
変更したいとします。
Linuxでタイムゾーンを一覧表示するには、「 list-timezones」を使用します 」オプションとtimedatectl 。
$ timedatectl list-timezones
ご覧のとおり、タイムゾーンは次の構文を使用して表示されます:大陸/地域 。
タイムゾーンをニューヨークに設定するには、grepを使用して簡単に検索できます。
$ timedatectl list-timezones | grep York
America/New_York
タイムゾーンを設定するには、「 set-timezone」を使用します 」コマンド。
$ timedatectl set-timezone America/New_York
現在のシステム日付を確認するには、timedatectlコマンドを再度実行する必要があります。
$ timedatectl
Local time: Wed 2019-10-16 18:35:36 EDT
Universal time: Wed 2019-10-16 22:35:36 UTC
RTC time: Wed 2019-10-16 22:35:36
Time zone: America/New_York (EDT, -0400)
System clock synchronized: no
systemd-timesyncd.service active: inactive
RTC in local TZ: no
ただし、現在の日付はまだ同期されていません。同期するには、NTPサービスをアクティブ化する必要があります。
デフォルトでは、systemdを使用してディストリビューションを使用している場合は、systemd-timesyncデーモンが必要です。 デフォルトで。
systemd-timesyncとNTPの主な違いは、デーモンがクライアント側のみを実装し、NTPのような複雑なメカニズムを使用していないことです。
時刻同期を有効にするには 、このコマンドを実行するだけです。
$ timedatectl set-ntp true
systemd-timesyncd.service active: true
chronyを使用したい場合 またはNTP 、次のセクションでは、 NTPを設定する方法について説明します およびchrony システムの日付を同期するため。
chrony(NTP)を使用してLinuxで日付を設定する
Linuxで日付を設定する最も正確な方法は、ntpプロトコルを使用することです。 。
簡単に言うと、NTPプロトコルは、ネットワークを介して異なるサーバー間で時刻を同期するために使用されます。
参照サーバーに接続するための待機時間を計算することにより、独自のサーバーに同期される参照タイムサーバーを使用します。
NTPプロトコルを使用すると、Linuxで非常に正確な日付を取得できます。 。
日付を設定するには、chronyを使用します サービス。
まず、timesyncdサービスがホストで実行されていないことを確認してください。
$ sudo systemctl stop systemd-timesyncd.service
次に、パッケージがサーバー上で最新であることを確認します。
$ sudo yum update
次に、YUMを使用してchronyパッケージをインストールします。
$ sudo yum install chrony [RHEL, CentOS]
$ sudo apt-get install chrony [Debian, Ubuntu]
ほとんどの場合、chronyサービスはデフォルトでディストリビューションにインストールされている可能性があります。
chronyサービスを有効にして開始するには、次のコマンドを実行する必要があります。
$ sudo systemctl enable chronyd
$ sudo systemctl start chronyd
statusコマンドを使用してサービスのステータスを確認します。
$ sudo systemctl status chronyd
chronyがシステムにインストールされたので、システムのタイムゾーンを調整してシステムの日付を変更できます。
chronyを開始すると、NTPを使用するためにsystemd-timesyncデーモンが自動的に非アクティブ化されるため、timedatectlコマンドのアクティブ化を設定する必要はありません。
確認したい場合は、次のコマンドを実行できます。
$ timedatectl set-ntp true
timedatectlコマンドを再度実行して、すべてが同期されていることを確認します。
$ timedatectl
Local time: Wed 2019-10-17 18:37:37 EDT
Universal time: Wed 2019-10-16 22:37:37 UTC
RTC time: Wed 2019-10-16 22:37:33
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
注 :「NTPサービス」の代わりに、「systemd-timesyncd.serviceactive」ラベルをyesに設定することもできます。サービスがアクティブであることを意味するのではなく、ホストが同期の方法としてchronyを使用していることを意味します。
また、「 date 」を実行することもできます 」をクリックして、現在のシステム日付を確認します。
$ date
Thu Oct 17 13:16:10 EDT 2019
すごい!
Linuxで日付を設定することに成功しました (CentOS / RHEL)chronyを使用します。
ntpd(NTP)を使用してLinuxで日付を設定する
前に説明したように、UbuntuとDebianで日付を設定するには、おそらくNTPプロトコルを使用するのが最も正確な方法です。
まず、ホストにntpサービスをインストールします 。
NTPクライアントをインストールするには、次のコマンドを実行するだけです。
$ sudo apt-get install ntp [Debian, Ubuntu]
$ sudo yum install ntp [CentOS, RHEL]
デフォルトでは、このコマンドを実行すると、NTP(ネットワークタイムサービス)がインストールされてアクティブ化されます。 )ホスト上のサービス。
確実にするには、NTPサービスのステータスを取得します。
$ sudo systemctl status ntp
デフォルトでは、NTPサービスを実行または再起動しても、timedatectlコマンドのNTPサービスはアクティブになりません。
NTP同期を有効にするには、「 set-ntp」を指定します 」オプション。
$ timedatectl set-ntp true
繰り返しますが、すべてが正しく実行されていることを確認するために、単純なtimedatectlコマンドを実行します。
$ timedatectl
Local time: Wed 2019-10-17 18:37:37 EDT
Universal time: Wed 2019-10-16 22:37:37 UTC
RTC time: Wed 2019-10-16 22:37:33
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
素晴らしい !
ntpを使用してLinuxで日付を正しく設定しました 。
dateコマンドを使用してLinuxで日付を設定
Linuxで日付を設定する方法の1つは、dateコマンドを使用することです。
このアプローチの主な欠点の1つは、タイムゾーンを設定してtimesyncdまたはchronydと同期するほど正確ではないという事実です。
ただし、この方法でそれを行うことは可能です。
まず、ホストでの非アクティブな時刻の同期です。そうしないと、手動の日付変更が同期サービスによって毎回消去されます。
$ sudo timedatectl set-ntp false
日付を設定するには、「-s」オプションで「date」を使用します。
$ date -s <date>
たとえば、yyyy-MM-dd形式を使用します 、この方法で日付を設定できます。
$ date -s '2019-10-17 12:00:00'
Thu Oct 17 12:00:03 EDT 2019
$ date -s '23 October 2019 12:00:00'
Wed Oct 23 12:00:00 EDT 2019
ショートカットを使用することもできます 日付を簡単に設定するため。
年のみを変更する場合は、「来年」を使用できます。 」または「昨年 」ショートカット。
$ sudo date -s "next year"
Sat Oct 17 12:02:21 EDT 2020
$ sudo date -s "last year"
Thu Oct 17 12:02:43 EDT 2018
次のショートカットを使用して、月のみを変更するか、日を変更するかを選択することもできます。
$ sudo date -s "next day"
Tue Oct 18 00:00:12 EDT 2019
$ sudo date -s "monday"
Mon Oct 21 00:00:00 EDT 2019
$ sudo date -s "next hour"
Wed Oct 21 13:00:19 EDT 2019
ハードウェアクロックをシステム日付と同期する
毎日のシステム管理タスクに進む前に、ハードウェアクロックをシステム日付と同期させることをお勧めします。
このようにして、2つの時計が異なる日付と時刻を表示していないことを確認しています。
ハードウェアクロックをシステム日付と同期するには、「-systohc」オプションを指定して「hwclock」コマンドを使用します。
$ sudo hwclock --systohc
$ sudo hwclock
2019-10-23 13:03:56.466724-0400
すばらしい!
同期が正常に完了しました 現在のシステム日付のハードウェア時計。
結論
今日のチュートリアルでは、Linuxシステムで日付を簡単に設定する方法を学びました。
タイムゾーンを設定できることを学びました systemd-timesyncdデーモンを使用します 時間同期を実行します。
より正確で効率的な時刻同期手法を探している場合は、chronyのいずれかを使用できることを学びました。 またはNTP この結果を達成するために。
また、dateコマンドを使用して静的に日付を設定できることもわかりました。
Linuxシステム管理に興味がある場合 、このテーマに関するチュートリアルはたくさんあります。