
我正在 AIX 伺服器中開發一個 ksh shell 腳本,該腳本必須在每天 13:00 準確運行。我沒有權限使用 CRONTAB、AT、WATCH、inotify、date -d 等。
while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done
我嘗試了上面的程式碼,但我不希望while
在條件成立之前在後台連續運行。建議我使用任何其他方式sleep
或while
循環或任何僅運行一次而不是連續運行的方式。
答案1
我只在 中完成過它perl
,並且從未使用過ksh
,但我不明白為什麼它不應該是可能的,但我所做的有點像(可能在任何語言中都不是有效的代碼):
while(true)
starttime=`date +%s`
actions
sleep starttime+24*60*60-`date +%s`
end
這只會使操作每 24 小時啟動一次。我的想法是讓它在 13:00 運行,只需在開始時添加一個循環,等待 13:00。想想還是換成starttime+24*60*60
類似的東西比較好date -d "13:00 tomorrow" +%s
。