特定の時刻および/または日付を設定するコマンドを知っていますが、現在の時刻に基づいて時刻を移動するコマンドが見つかりません。
時間を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」オプションがあり、スーパーユーザーが時計を数秒前後に調整できました。