저는 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
인수가 실제로 시간 값으로 어떻게 해결되는지 확인하는 함수입니다.