Linuxでシステム日付を変更するにはどうすればよいですか?
変わりたい:
使用する - date -s
:
date -s '2014-12-25 12:34:56'
ルートとして、またはSudo
の下で実行します。年/月/日のいずれか1つのみを変更することはより困難であり、現在の日付の一部を繰り返す必要があります。主要なデスクトップ環境に組み込まれたGUI日付ツールもあり、通常は時計を通じてアクセスされます。
時間の一部のみを変更するには、日付文字列でコマンド置換を使用できます。
date -s "2014-12-25 $(date +%H:%M:%S)"
日付は変更されますが、時刻は保持されます。見る - man date
は、他の組み合わせを構築するための詳細をフォーマットするためです。個々のコンポーネントは%Y
、%m
、%d
、%H
、%M
、%S
。
システム時間
date
を使用して、システムの日付を設定できます。 GNU date
の実装(ほとんどの非組み込みLinuxベースのシステムで見られる)は、多くの異なる形式を受け入れて時刻を設定します。ここではいくつかの例を示します。
年のみを設定:
date -s 'next year'
date -s 'last year'
月のみを設定:
date -s 'last month'
date -s 'next month'
日のみを設定:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
すべて一緒に設定:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
ハードウェア時間
これでシステム時刻が設定されましたが、ハードウェアクロックと同期させることができます。
使用する --show
ハードウェア時間を出力するには:
hwclock --show
ハードウェアクロックを現在のシステム時刻に設定できます。
hwclock --systohc
または、ハードウェアクロックに対するシステム時刻
hwclock --hctosys
date
コマンドで日付を変更します。ただし、コマンドは引数として完全な日付を想定しています。
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
日付の一部を変更するには、変更する日付部分を文字列として、その他すべてを日付フォーマット変数として、現在の日付を出力します。次に、それをdate -s
コマンドに渡して設定します。
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
月を12月-12月に変更します。
日付形式は次のとおりです。
%Y
-年%m
-月%d
-日%H
-時間%M
-分ESXI 5.1を実行している私のような人のために、システムが私に答えたのはこれです
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
代わりに特定のESXコマンドを使用する必要がありました。
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
システムの日付を変更するコマンドはdate
です。
dateコマンドを呼び出すには2つの方法があります (Linuxの場合):
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
simplerelative日付を使用できるので、最も簡単な方法はdate -s
を使用することです
$ date -s yesterday; date
date: cannot set date: Operation not permitted
Sat Jan 5 07:21:07 EST 2019
Sun Jan 6 07:21:07 EST 2019
制限付きユーザー$
で実行されたため、日付は変更されませんでした。実際に日付を変更したい場合は、ルート(#
)またはSudoを使用します。
$ Sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
したがって、relative日付の任意の部分を変更することは、名前を付けるのと同じくらい簡単です。
$ date -s "5 years ago"
Mon Jan 6 08:26:26 EST 2014
$ date -s "+6 months"
Sat Jul 6 08:28:39 EDT 2019
$ date -s "+3 hours -13 minutes"
Sun Jan 6 11:16:59 AST 2019
絶対日付は、より詳細が必要なため、もう少し複雑です。
$ date -s "2001-07-23 10:11:12"
または、dateコマンドを2回使用できます。
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
%
のいずれかを有効な値に置き換えると、日付が設定されます(ルートとしてのみ)。
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
2番目の日付呼び出しフォームは、システム日付を直接変更するために使用されます。
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
そう :
date 11230812 # MMDDhhmm
日付を11月23日の08時間12分に設定します。
BSDも同様のコマンド を持っていますが、フォーマットが異なります([[[[[[]] yy] mm] dd] HH] MM [.ss])。
制限されたユーザーとしてdate
を試し、何も変更しないでください。
$ date 11230812
date: cannot set date: Operation not permitted
Sat Nov 23 08:12:00 EST 2019
または、実際に日付を変更したい場合は、rootとして以下を実行します。
# date 11230812
# date
Sat Nov 23 08:12:00 EST 2019
NTPまたはchronyなどのサービスが影響を受けます。また、再起動すると、日付が実際の日付にリセットされます。
YYを追加して年を設定します。
$ date 1123081222
date: cannot set date: Operation not permitted
Wed Nov 23 08:12:00 EST 2022
または、年および世紀を設定するCCYY:
$ date 112308121982
date: cannot set date: Operation not permitted
Tue Nov 23 08:12:00 EST 1982