作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我写了一个 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/
我是一名优秀的程序员,十分优秀!