Linux
2250 是 CentOS/RedHat 上關閉命令的有效時間間隔嗎?
我需要在周日關閉站點中的所有機器。
我創建了一個腳本(在底部),它將在前一個星期五在每台機器上執行以下操作:
command="hostname ; sudo shutdown -h 2250" ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=1 -t privuser@${host} $command
2250 是關閉命令的有效時間間隔嗎?
筆記:
- 機器執行 CentOS/RedHat 7。
- 我用Google搜尋,但找不到關閉命令的時間參數提到的任何上限。
這是完整的腳本:
#!/usr/bin/env bash # WHEN: Sunday, October 28, 2018 from 8:00 a.m. # to calculate minutes: ( (24 - now_hour)*60 + 1440 + 300 ) # if run on 15:30 Friday: (24 - 15.5) * 60 + 1440 + 300 = 2250 ignored=(168 12 15 38 42 46 99 180) command="hostname ; sudo shutdown -h 2250" for tuple in {10..204} ; do host="192.168.1.${tuple}" if [[ $(printf "_[%s]_" "${ignored[@]}") =~ .*_\[$tuple\]_.* ]]; then echo ">>> will skip $host" continue fi echo ">>> try '$command' on $host" ping -c1 $host ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=1 -t privuser@${host} $command done
在關閉源中,an
int
用於等待時間,因此在典型機器上,上限是2147483647
分鐘,即4083
從現在開始的幾年。以下是來源的相關部分:
int main(int argc, char **argv) { ... int c, i, wt; ... if (strchr(when, ':') == NULL) { /* Time in minutes. */ wt = atoi(when); if (wt == 0 && when[0] != '0') usage(); } else { ... } ... /* Give warnings on regular intervals and finally shutdown. */ if (wt < 15 && !needwarning(wt)) warn(wt); while(wt) { if (wt <= 5 && !didnolog) { donologin(wt); didnolog++; } if (needwarning(wt)) warn(wt); hardsleep(60); wt--; } shutdown(halttype); return 0; /* Never happens */ }