システムクロック時間を前後に移動するには? [コピー]

システムクロック時間を前後に移動するには? [コピー]

特定の時刻および/または日付を設定するコマンドを知っていますが、現在の時刻に基づいて時刻を移動するコマンドが見つかりません。

時間をx秒/分/時間単位で前後に移動するコマンドは何ですか? (何日/ヶ月/年くらいでしょうか?)

答え1

システム時間を設定するコマンドは次のとおりです。date。システム時間を設定するには、root 権限が必要です。date現在の時間に対する相対量ではなく、指定した時間に時間を設定します。後者の動作は意味がないからです。たとえば、(組み込まれていないLinuxの場合)の出力を計算して再フィードバックして、date現在の時間を相対量だけ変更するコマンドを作成できます。date

date $(date +%m%d%H%M%Y.%S -d '1 hour ago')

NTPなどのタイミングシステムを実行している場合は、このように時計を変更すると問題が発生する可能性があります。まず停止します。

Run はdateハードウェア時計ではなくシステム時間を設定します。 Linuxでは、以下を実行します。hwclock --systohcシステム時間をハードウェア時計にコピーします。これは完全終了時に自動的に行われます。

別の時間帯の時間を見たい場合は、すべてを忘れて希望の時間帯を設定してください。 Linuxでは、以下を実行します。tzselectシステムタイムゾーンを設定します。異なる時間帯でプログラムを実行するには、TZ環境変数を設定します。

export TZ=Asia/Tokyo
emacs

プログラムを実行し、時間が実際の時間と異なると信じるようにしたい場合は、そのプログラムで実行してください。faketime

faketime '1 hour ago' date

答え2

次の形式を使用して、現在時刻より前の時刻を取得することもできます。

$ date --date='1 month'
Sun Sep 17 15:01:11 CST 2017
$ date --date='1 month'
Sun Sep 17 15:01:15 CST 2017
$ date --date='1 month 2 hours'
Sun Sep 17 17:01:23 CST 2017
$ date --date='1 month 2 hours 3 minutes'
Sun Sep 17 17:04:30 CST 2017

ago現在の日付より前の時刻を使用することもできます。

$ date
Fri Aug 18 16:14:41 CST 2017
$ date --date='1 month 2 days ago'
Sat Sep 16 16:14:43 CST 2017

--setこのオプションは利用可能です環境ただし、+実際の日付に追加する時間、分などの数字の前に記号を追加します。

$ date
Thu Aug 17 15:07:00 CST 2017
$ date --set='+1 day +1 hour'
Fri Aug 18 16:07:24 CST 2017
$ date
Fri Aug 18 16:07:31 CST 2017
$ date --set='+1 month 3 days +1 hour'
Thu Sep 21 17:07:42 CST 2017

これが役に立つことを願っています。

答え3

date -Ins -s $(date -Ins -d '-1 hour')

答え4

私が正確に覚えているなら、UNIX SVR4では「date」コマンドに「-a」オプションがあり、スーパーユーザーが時計を数秒前後に調整できました。

関連情報