gpt4 book ai didi

linux - Shell脚本时间控制

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:45 25 4
gpt4 key购买 nike

我正在运行一个 shell 脚本,每周运行一次或两次。该程序每天运行几个小时(取决于文件数量)..

但问题是,我必须在工作时间暂停这个程序..例如,如果工作时间是凌晨 1 点到凌晨 3 点,那么所有脚本工作都应该暂停并等到凌晨 3:01 才能重新开始。如果当前正在运行的进程在凌晨 1 点之后运行,我不必终止该进程。但每当完成该特定文件时,我都必须暂停以处理下一个文件..

目前这就是我的想法

while true
do
curr_time= date +"%H%M%S"
if [ $curr_time -ge 005000 -a $curr_time -le 030000 ]
then
echo "Pause for 12000 seconds"
sleep 12000
else
break;
fi
done

所以从 12:50 开始暂停,而不是希望一切都能在凌晨 1 点之前完成并 sleep 12000 秒,大约 3 小时,然后重新启动..

但问题是,如果由于某种原因,当它从 12000 秒的 sleep 中醒来时,而且还不到凌晨 3 点,它会再 sleep 12000 秒。我该如何解决这个问题?

我希望它在凌晨 1 点左右暂停(每个文件处理大约需要 1 分钟,但要处理的文件只有成百上千个)并在凌晨 3 点立即开始。如果它经过凌晨 1 点,我不必杀死它。只需在该文件处理完成后暂停即可。

最佳答案

由于您的问题被标记为 bash,您可以使用算术扩展来休眠所需的秒数。

sleep $(($(date -d 3:01 +%s) - $(date +%s)))

date -d 3:01 +%s 应该告诉我们从纪元到 3:01 的秒数,date +%s 应该告诉我们从纪元到现在的秒数。

差异应该是您必须等待 3:01 的秒数。

关于linux - Shell脚本时间控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com