このチュートリアルでは、timedatectl、NTP、またはdateを使用してLinuxで日付と時刻を設定するテクニックに焦点を当てています。
システム管理者として、複数のサーバーでシステムの日付を設定するように求められることがあります。
これらのタイムゾーンが正しく構成されていない可能性があります。
結果として、プログラムの中には無効な日付をログに記録することがあり、例えばサーバーログの一部を調べることができないことがあります。,
このチュートリアルでは、現在の地理的なタイムゾーンに合わせてLinuxで日付を適切に設定する方法を見ていきます。
まず、systemd-timesyncオプションを使用したtimedatectlコマンドを見ていきます。 次に、システムの日付を効率的に同期するために、chronyまたはNTPサービスのいずれかをインストールします。
最後に、”date”コマンドを使用してシステムの日付を静的に設定します。
また、これらの方法と、好ましくはどちらを使用したいかの違いについても議論します。,
目次
前提条件
開始する前に、いくつかのコマンドを実行するには、ホストに対してsudo権限を持っている必要があります。
確認するには、次のコマンドを実行できます
$ sudo -lUser user may run the following commands on localhost: (ALL) ALL
アカウントにsudo権限がない場合は、このチュートリアルに従ってDebianベースのシステムまたはRed Hatベースのシステム(CentOS,RHEL)でsudoを取得します
timedatectlを使用してLinuxで日付を設定します
Debian/UbuntuまたはRHEL/CentOSで作業しているかどうかにかかわらず、Debian/UbuntuまたはRHEL/CentOSで作業しているかどうかにかかわらず、アカウントにsudoを設定する方法は次のとおりです。日付は同じです。,
日付を設定するには、システムがNTPサーバーと同期するために、タイムゾーン情報を設定し、(オプションで)NTPプロトコルをアクティブにする必要があります。 NTPプロトコル(ntpdまたはchronyを使用)を使用しない場合、システムはデフォルトでtimesyncサービスを使用します。
タイムゾーンが正しく設定されていない場合は、タイムゾーン情報を変更する必要があります。
Linux上で現在のタイムゾーンを調べるには、timedatectlコマンドを実行できます。
それを変更したいとしましょう。,
Linuxでタイムゾーンをリストするには、timedatectlで”list-timezones”オプションを使用します。
$ timedatectl list-timezones
ご覧のとおり、タイムゾーンは次の構文を使用して表示されます。
タイムゾーンをNew Yorkに設定するには、grepを使用して簡単に検索できます。
$ timedatectl list-timezones | grep YorkAmerica/New_York
タイムゾーンを設定するには、”set-timezone”コマンドを使用します。
$ timedatectl set-timezone America/New_York
現在のシステム日付を確認するには、timedatectlコマンドをもう一度実行する必要があります。,
ただし、現在の日付がまだ同期されていないため、NTPサービスを同期するには、NTPサービスをアクティブにする必要があります。
デフォルトでは、systemdを使用してディストリビューションを使用している場合は、デフォルトでsystemd-timesyncデーモンが必要です。
systemd-timesyncとNTPの主な違いは、デーモンがクライアント側のみを実装し、NTPのような複雑なメカニズムを使用していないことです。
時刻synchronizationを有効にするには、次のコマンドを実行するだけです。,
$ timedatectl set-ntp truesystemd-timesyncd.service active: true
chronyまたはNTPを使用する場合、次のセクションでは、システム日付を同期するためにNTPとchronyを設定する方法について説明します。
linuxで日付を設定するには、chrony(NTP)を使用します
Linuxで日付を設定する最も正確な方法は、ntpプロトコルを使用することです。
簡単なリマインダーとして、NTPプロトコルは、ネットワーク上の異なるサーバ間で時間を同期するために使用されます。
参照サーバーに接続するための待機時間を計算することによって、独自のサーバーに同期される参照タイムサーバーを使用します。,
NTPプロトコルを使用すると、Linux上で非常に正確な日付を得ることができます。
日付を設定するには、chronyサービスを使用します。まず、timesyncdサービスがホスト上で実行されていないことを確認してください。
$ sudo systemctl stop systemd-timesyncd.service
次に、パッケージがサーバー上で最新であることを確認してください。
$ sudo yum update
次に、yumを使用してchronyパッケージをインストールします。
$ sudo yum install chrony $ sudo apt-get install chrony
ほとんどの場合、chronyサービスがデフォルトでディストリビューションにインストールされている場合があります。,
chronyサービスを有効にして起動するには、次のコマンドを実行する必要があります。
$ sudo systemctl enable chronyd$ sudo systemctl start chronyd
statusコマンドを使用してサービスのステータスを確認します。
$ sudo systemctl status chronyd
chronyがシステムにインストールされたので、システムのタイムゾーンを調整してシステムの日付を変更できます。,
ntpを使用するためにchronyを起動すると、systemd-timesyncデーモンが自動的にアクティブ化されなくなるため、timedatectlコマンドのNTPプロトコルをアクティブ化する
それを確認したい場合は、次のコマンドを実行できます。
$ timedatectl set-ntp true
timedatectlコマンドをもう一度実行して、すべてが同期されていることを確認します。
注:”NTPサービス”を持つ代わりに、”systemd-timesyncd”を持つことができます。service active”ラベルがyesに設定されています。, これは、サービスがアクティブであることを意味するのではなく、ホストが同期の方法としてchronyを使用していることを意味します。
また、”date”を実行して現在のシステム日付を確認することもできます。
$ date Thu Oct 17 13:16:10 EDT 2019
素晴らしい! chronyを使用してLinux(CentOS/RHEL)で日付を正常に設定しました。
ntpd(NTP)を使用してLinuxで日付を設定する
前に説明したように、NTPプロトコルを使用することは、おそらくUbuntuとDebianで日付を設定する最も正確
まず、ホストにntpサービスをインストールします。,
NTPクライアントをインストールするには、次のコマンドを実行するだけです。
$ sudo apt-get install ntp $ sudo yum install ntp
デフォルトでは、このコマンドを実行すると、ホストにNTP(Network Time Service)サービスがインストールされ、アクティブ化されます。これを確実にするには、NTPサービスのステータスを取得します。
$ sudo systemctl status ntp
デフォルトでは、NTPサービスを実行または再起動しても、timedatectlコマンドのNTPサービスはアクティブNTP同期を有効にするには、”set-ntp”オプションを指定します。,
$ timedatectl set-ntp true
繰り返しますが、すべてが正しく実行されていることを確認するために、単純なtimedatectlコマンドを実行します。
素晴らしい!
ntpを使用してLinuxで日付を正しく設定しました。
dateコマンドを使用してLinuxで日付を設定する
Linuxで日付を設定する方法の一つは、dateコマンドを使用することです。
このアプローチの大きな欠陥の一つは、タイムゾーンを設定してtimesyncdまたはchronydと同期させるほど正確ではないという事実です。
ただし、この方法で実行することはまだ可能です。,
まず、あなたのホスト上のdesactive time synchronization、そうでない場合は、手動の日付の変更は、同期サービスによって毎回消去されます。
$ 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
次のショートカットで月または日のみを変更することもできます。
ハードウェアクロックをシステムの日付と同期する
毎日のシステム管理タスクに進む前に、ハードウェアクロックをシステムの日付と同期
このようにして、二つの時計が異なる日付と時間を表示していないことを確認しています。
ハードウェアクロックをシステムの日付と同期させるには、”hwclock”コマンドを”–systohc”オプション付きで使用します。
$ sudo hwclock --systohc$ sudo hwclock2019-10-23 13:03:56.466724-0400
素晴らしい!,
ハードウェアクロックを現在のシステム日付と正常に同期しました。
結論
今日のチュートリアルでは、任意のLinuxシステムで日付を簡単に設定する方法を学びました。
タイムゾーンを設定し、systemd-timesyncdデーモンに時刻synchronizationを実行させることができることを学びました。
より正確で効率的な時刻同期技術を探しているなら、この結果を達成するためにchronyまたはNTPのいずれかを使用できることを学びました。
また、dateコマンドを使用して日付を静的に設定できることもわかりました。,
Linuxシステム管理に興味がある場合は、このテーマに関するチュートリアルがたくさんあります。
コメントを残す