Linuxで現在の時刻を設定する方法は?


69

次のコマンドの出力が異なるのはなぜですか?

root@vmi2115:/var# hwclock
Sun 26 Jun 2011 01:21:38 PM CEST  -0.273230 seconds
root@vmi2495:/var# date
Sun Jun 26 15:21:39 CEST 2011
root@vmi2115:/var# 

Linuxで現在の時刻を変更できますか?


1
Googleをすばやく検索すると、次のリンクが返されます。> cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt

回答:


90

通常、時間ntpdを自動的に設定する必要があります。その場合は、時間を自動的に設定するように設定する必要があります。

詳細はディストリビューションごとに若干異なりますが、たとえばUbuntuを実行している場合は、UbuntuでNTPをセットアップするためのガイドがあります。それ以外の場合は、単にGoogleでntpd <distribution-name>、おそらくそれを見つけるでしょう。

ただし、手動で設定する場合は、を使用できますdate --set="<date string>"。この例は次のとおりです。

date --set="23 June 1988 10:00:00"
date --set="10:00:00"

37

ハードウェアクロックを現在のシステム時刻に設定します。

# hwclock --systohc

ハードウェアクロックからシステム時刻を設定します。

# hwclock --hctosys

23

ただntpdate ntp.ubuntu.com、すべてがうまくいきます。

これに関する詳細は、Ubuntu公式ドキュメントにあります。


18
回答についてさらに詳しく説明し、QAおよび今後の読者に、あなたが言及したコマンドが何をするのか、なぜそのようなアクションを推奨するのかを説明してください。注:QAは、時刻を同期する方法ではなく、時刻を変更する方法を尋ねました。
ロレンツォフォンマッターホルン

1
@LorenzoVonMatterhorn OK
ガンサースワプルバ14

これにはまだ説明がありません。このコマンドを実行するとどうなりますか?
jerclarke 14年


1
正確な時間を設定するのに最適です。
サブリナゲルバート

13

別の一般的な非常に迷惑な問題は、間違ったタイムゾーンが選択された場合です...

日付出力でタイムゾーンを確認します。

$日付

2013年8月23日18:47:04 UTC UTC

タイムゾーンのタイプを修正するには:

$ sudo tzselect

対応する番号の正しい地域を選択します。

2番目のタスクは、正しい時間を設定することです。

$ sudo date --set = "18:37:00"

または、単にHW-Clockから時間をかけてください:

$ sudo hwclock --hctosys


3

CentOSタイムゾーンに位置している/usr/share/zoneinfo/にシステム日付を変更するには、特定のタイムゾーンのことができます:

まず、既存の現地時間ファイルのバックアップを作成します。

sudo mv /etc/localtime /etc/localtime.bak

次に、リンクを作成します。

sudo ln -s /usr/share/zoneinfo/Europe/Lisbon  /etc/localtime

と入力して、新しいシステムの日付を確認しますdate

Linuxシステムの日付を手動で調整するには、次のように入力します。

date -s "11 MAR 2006 11:11:11"

または

date --set="11 MAR 2015 11:11:11"

または

date +%Y%m%d -s "20150311"

ハードウェアクロックを現在のシステム時刻に設定するには:

hwclock --systohc

または

hwclock -w

1

「hwclock」はハードウェア(マシン)の日付であり、「date」はソフトウェア(オペレーティングシステム)の日付です。

PCハードウェアの日付を変更する場合:

hwclock --set --date="2013-7-31 09:30"

ソフトウェアの変更日:

date --set "2013-7-31 09:30"

1

これを試して:

date +%T -s "12:21:00"

または

date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"

0

dateCPUが起動した時点からの時間として与えられた時間に、指定された内部ハードウェアクロックを加えた時間を返しhwclockます。これは、内部クロックの時間を示します。

CPUに基づく時間は、マシンが稼働している時間が長いほどドリフトする傾向がありhwclock --hctosysます。これがコマンドの存在の理由です。また、インターネット上で国際的に時間を調整するために使用されるNetwork Protocol Timeの使用の背後にある理由の1つです。


0

NTPクライアントがない場合にこれを使用します

date -s $(wget -q -O - http://www.timeapi.org/eest/now | cut -d '+' -f 1 | tr -d : | tr -d - | tr -d T | cut -c 1-12)

URLのeestはローカルタイムゾーンです

utc ...などを使用できます


しかし、この1は私のために働い:askubuntu.com/a/683136
user956584

0

Linuxで現在の時刻を変更できますか?

私にとっては、最初にこのコマンドを実行する必要がありました。

sudo systemctl stop systemd-timesyncd

それ以外の場合、systemdは時刻をすぐにリセットします。systemdサービスを停止した後、実行dateは期待どおりに機能します。

$ sudo date -s 'january 1 1971'
Fri Jan  1 00:00:00 CET 1971
$ date
Fri Jan  1 00:00:00 CET 1971

サービスの実行中、date -sコマンドは機能しているように見えましたがdate、しばらくしてから実行すると、systemd時間を再度取得できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.