每天在欧洲中部时间 13 点安排一个 shell 脚本,无需 crontab

每天在欧洲中部时间 13 点安排一个 shell 脚本,无需 crontab

我正在 AIX 服务器中开发一个 ksh shell 脚本,该脚本必须在每天 13:00 准确运行。我没有权限使用 CRONTAB、AT、WATCH、inotify、date -d 等。唯一的选择是使用使脚本连续循环并在后台运行。

while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done

我尝试了上面的代码,但我不希望while在条件成立之前在后台连续运行。建议我使用任何其他方式sleepwhile循环或任何仅运行一次而不是连续运行的方式。

答案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

相关内容