我正在尝试安排我的脚本在两个不同的时间运行,然后继续在后台运行,等待下次再次满足条件。
到目前为止,我无法做到这一点,因为在满足一个条件后,这些脚本会自动退出:
function schedule {
while :
do
hour=$(date +"%H")
minute=$(date +"%M")
if [[ "$hour" = "02" && "$minute" = "31" ]]; then
# run some script
exec /home/gfx/Desktop/myscript.sh
wait
schedule
elif [[ "$hour" = "02" && "$minute" = "32" ]]; then
# run some script
exec /home/gfx/Desktop/myscript.sh
wait
schedule
fi
done
}
schedule
我执行的脚本如下:
$cat myscript.sh
echo "this a message"
欢迎任何想法或评论,谢谢!
答案 0 :(得分:2)
当你这样做时:
exec some program
something else
如果exec有效,那么something else
将永远不会发生,因为脚本被你所执行的内容所取代
也许代替:
exec /home/gfx/Desktop/myscript.sh
wait
schedule
你想要:
/home/gfx/Desktop/myscript.sh &
wait
# schedule -- don't make a fork bomb
如评论中所述,& + wait
有点愚蠢,你可能想要:
/home/gfx/Desktop/myscript.sh &
# wait
# schedule
或:
/home/gfx/Desktop/myscript.sh
# wait
# schedule
取决于你是否想在后台使用myscript。
ALSO 你应该在循环中放一个睡眠,(也许是sleep(59)
)以防止它像女妖一样循环。
您开始理解我认为的cron的吸引力(至少对于您不希望与终端会话进行交互的事情而言)。
答案 1 :(得分:1)
Crontabs是放置这些东西的最佳场所。
使用
编辑crontab$ crontab -e
将以下行添加到文件
31 2 * * * /home/gfx/Desktop/myscript.sh
并保存crontab文件。您的脚本将每天凌晨2:31执行