Tôi đã gặp một tình huống tương tự. Mục tiêu của tôi là có một giải pháp rất đơn giản để các chuyên viên máy tính không unix duy trì.
Khi máy chủ Linux của tôi khởi động lại, nó sẽ chạy một đoạn script gửi cảnh báo. Nhưng nếu điều này xảy ra như là một phần của "Cửa sổ bảo trì" được xác định là từ 11 giờ tối thứ bảy đến 6 giờ sáng chủ nhật, tôi không muốn gửi trang này, vì khởi động lại trong cửa sổ này là OK (áp dụng các bản vá, v.v.). Tôi đã thử nghiệm nó và nó hoạt động như dự định (theo như tôi có thể nói).
Dưới đây là lịch để tham khảo:
June 2018
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Đây là mã kiểm tra của tôi:
FMT='+%k:%a' # i.e. Sat:23 for Saturday at 11pm local time
TESTDATE1=$(date -d '2018-06-23 14:30:00' $FMT)
TESTDATE2=$(date -d '2018-06-23 23:59:59' $FMT)
TESTDATE3=$(date -d '2018-06-24 00:00:00' $FMT)
TESTDATE4=$(date -d '2018-06-24 05:59:59' $FMT)
TESTDATE5=$(date -d '2018-06-24 08:01:00' $FMT)
for VAL in "${TESTDATE1}" $TESTDATE2 $TESTDATE3 $TESTDATE4 $TESTDATE5
do
#extract the 24 hour value and the day
HH="$(echo ${VAL} | cut -d':' -f1)"
DAY="$(echo ${VAL} | cut -d':' -f2)"
echo Testing $VAL $HH $DAY
if [[ "$DAY" = "Sat" && $HH -ge 23 ]]; then
echo ' Shhhh People are trying to sleep ... Sat window'
elif [[ "$DAY" = "Sun" && $HH -le 6 ]]; then
echo ' People are trying to sleep ... Sun window'
else
echo ' PAGE SOMEONE - time is outside the Maintenance Window'
fi
done
Đây là đầu ra
Testing 14:Sat 14 Sat
PAGE SOMEONE - time is outside the Maintenance Window
Testing 23:Sat 23 Sat
Shhhh People are trying to sleep ... Sat window
Testing 0:Sun 0 Sun
People are trying to sleep ... Sun window
Testing 5:Sun 5 Sun
People are trying to sleep ... Sun window
Testing 8:Sun 8 Sun
PAGE SOMEONE - time is outside the Maintenance Window