gpt4 book ai didi

linux - 如何运行脚本取决于不同的停止时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:27 24 4
gpt4 key购买 nike

您好,我写了一个 bash 脚本,它每 24 小时自动运行我的 python 程序并更新参数。第 5 天后,它将使用最后设置的参数运行。

我想添加选项,如果系统关闭时间超过 6 小时,脚本将从第一天选项开始。如果不是,它将从上一个状态继续。

目前我只是将开始时间写入文件。但是我不确定如何从该文件中读取时间字符串并用于计算开始和停止之间的时间差。

我只是试图将日期写入文件。但是我不太确定如何在异常情况下读取和使用此值。

echo "$(date) $(ls -1 | wc -l)" >> starttime.txt
python3 startmeVtest.py 5 2 10
timeout 86400 ./start.sh
sleep 4
python3 startmeVtest.py 10 4 20
timeout 86400 ./start.sh
sleep 4
python3 startmeVtest.py 20 4 40
timeout 86400 ./start.sh
sleep 4
python3 startmeVtest.py 30 8 50
timeout 86400 ./start.sh
sleep 4
python3 startmeVtest.py 50 9 70
./start.sh

如果系统停止时间少于 6 小时,则只应执行最后一个脚本

sleep 4
python3 startmeVtest.py 50 9 70
./start.sh

最佳答案

考虑在转储到 starttime.txt 的日期命令中使用不同的(或额外的)格式。

代替:

echo "$(date) $(ls -1 | wc -l)" >> starttime.txt

考虑:

echo "$(date +%s) $(ls -1 | wc -l)" >> starttime.txt

以上编辑将以纪元时间输出时间戳。纪元时间是自纪元以来的秒数(通常是格林威治标准时间 1970 年 1 月 1 日)。整数值将使您更容易比较 6 小时时差:

下面是一段代码,用于查看 starttime.txt 中的最后一个条目是否已存在 6 小时:

lastrun=$(tail -1 starttime.txt | awk '{print $1}')
currenttime=$(date +%s)
if [ $currenttime -gt $(( lastrun + 6 * 60 * 60 )) ] ; then
# execute the system has STOP more than 6 hours logic
:
else
# execute the system has STOP less than 6 hours log
:
fi

但是,您也可以通过查看 starttime.txt 上的时间戳并将其与另一个 6 小时前的文件进行比较来简化此过程。这是使用 -ot 测试的另一种方法。 -ot 比 test 旧。以下是如何将其应用于您的用例:

touch -d "6 hours ago" 6hoursago
if [ starttime.txt -ot 6hoursago ] ; then
# execute the "system has STOP more than 6 hours logic
:
else
# execute the "system has STOP less than six hours
:
fi

关于linux - 如何运行脚本取决于不同的停止时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55782625/

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