Bash
將程序(bash 腳本)暫停到特定時間
我想暫停某個 bash 腳本 30 分鐘。現在我使用
sleep 1800
,但這沒有考慮筆記型電腦可能處於掛起(睡眠)狀態的時間。有沒有辦法做到這一點?如果現在是下午 12:53,我想在凌晨 1:23 恢復節目。但與此同時,電腦可以處於睡眠狀態。如果電腦一直睡到凌晨 1:23,那麼我希望程序在從睡眠中恢復後立即恢復。
也許將它包裝在一個
while
循環中並測試您是否在預定時間。#!/bin/bash SOON=$(($(date +%s) + 1800)) while [[ "$NOW" -le "$SOON" ]]; do sleep 1 NOW=$(date +%s) done
日期的想法也可以在chepner 的這個答案中找到。自1970 年以來,以秒
+%s
為date
單位格式化日期。$(( ))
只是算術增加秒數。用任意數量替換 1800(可能最好用少量測試,看看它是否有效)。sleep 1
使腳本每秒檢查一次條件。