我正在 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
。