私はCentOS 7.5.1804およびGNU bashバージョン4.2.46(2)リリース(x86_64-redhat-linux-gnu)を使用しています。
メンテナンス期間中にスケジュールされた再起動の場合、これから次の再起動までの時間(分)を計算します。たとえば、約3ヶ月後に再起動するには、次のようにします。
shutdown -r +129600
bashをよりよく理解したいのですが、最も高い値が何であるか、どのように計算するのか疑問に思います。
int32 を使用した計画終了が報告されます。
shutdown -r +4294967295
Shutdown scheduled for Tue 10184-07-27 ...
より高い値も可能ですが、可能な最大値はどのように計算しますか?
答え1
私のコンピュータでは、/sbin/shutdownは/sbin/systemctlへのシンボリックリンクです。
systemctlソースからナビゲートします(https://code.launchpad.net/~ubuntu-branches/ubuntu/trusty/systemd/trusty)、わかります
- これ
shutdown_parse_argv
この関数は、時間指定を次arg_when
の型の変数に解析します。usec_t
- これ
send_shutdownd
この関数はsd_shutdown_command
usec_t 値を使用して構造を生成します。 これ
sd_shutdown_command
構造には以下が含まれます。/* Microseconds after the epoch 1970 UTC */ uint64_t usec;
したがって、最も長い時間は次のようになります。
$ \bc <<< '(2^63-1) / 10^6 / 60' # minutes
153722867280
$ \bc <<< '(2^63-1) / 10^6 / 60 / 24 / 365' # years
17548272
そういえばまた読まなかったですね。parse_time_spec
引数が実際に時間値でどのように解決されるかを確認する関数です。