Bash while循环以示例运行特定时间的命令
时间:2020-02-23 14:40:23 来源:igfitidea点击:
如何在bash while循环中运行Shell脚本5分钟?
linux睡眠。
bash等待。
bash的循环。
bash脚本循环。
Shell脚本中的for循环。
ash睡。
脚本计时器。
如何循环运行某个功能几分钟然后退出?
如何在Shell脚本中运行命令几分钟并退出?
在shell中循环时的脚本计时器条件。
同时循环执行一项功能,并休眠15分钟。
shell脚本,使用bash while循环每5分钟运行一次命令。
持续时间重击。
循环壳。
运行bash脚本计时器。
在本文中,我将显示一些示例,以使用bash while循环在特定时间运行函数或者命令。
bash while循环5分钟(将睡眠时间定义为30秒)
其中我创建了一个小脚本,该脚本将运行5分钟,每10秒运行一条命令。
我们可以将Linux睡眠计时器从10秒增加到希望脚本再次运行相同命令之前要等待的任何值。
要等待1分钟,我们可以使用" sleep 1m"
如果希望更改循环应运行的总脚本计时器,请更改运行时变量值。
因此,如果我们希望运行while循环10分钟,则将runtime =" 10分钟"
# cat /tmp/testscript.sh #!/bin/bash runtime="5 minute" endtime=$(date -ud "$runtime" +%s) while [[ $(date -u +%s) -le $endtime ]] do echo "Time Now: `date +%H:%M:%S`" echo "Sleeping for 10 seconds" sleep 10 done
运行我们的脚本。
我已经修剪了输出。
# /tmp/testscript.sh Time Now: 23:56:26 Sleeping for 10 seconds Time Now: 23:56:36 Sleeping for 10 seconds Time Now: 23:56:46 Sleeping for 10 seconds Time Now: 23:56:56 Sleeping for 10 seconds Time Now: 23:57:06 Sleeping for 10 seconds <<Output trimmed>> Time Now: 00:00:56 Sleeping for 10 seconds Time Now: 00:01:06 Sleeping for 10 seconds Time Now: 00:01:16 Sleeping for 10 seconds Time Now: 00:01:26 Sleeping for 10 seconds
bash while循环5分钟(定义睡眠时间1分钟)
其中我们将Linux睡眠脚本计时器保持为1分钟,因此date命令将每分钟运行一次,直到5分钟完成。
我们可以将date命令替换为要执行的任何其他命令。
# cat /tmp/testscript.sh #!/bin/bash runtime="5 minute" endtime=$(date -ud "$runtime" +%s) while [[ $(date -u +%s) -le $endtime ]] do echo "Time Now: `date +%H:%M:%S`" echo "Sleeping for 1 minute" sleep 1m done
运行我们的脚本
# /home/oamsys/testscript.sh Time Now: 23:58:43 Sleeping for 1 minute Time Now: 23:59:43 Sleeping for 1 minute Time Now: 00:00:43 Sleeping for 1 minute Time Now: 00:01:43 Sleeping for 1 minute Time Now: 00:02:43 Sleeping for 1 minute Time Now: 00:03:43 Sleeping for 1 minute
bash while循环5分钟(定义睡眠时间10秒)
在此示例脚本中,我将使用不同的逻辑来每10秒运行我的命令5分钟。
现在,我们可以调整脚本,并在运行命令之前将Linux睡眠脚本计时器修改为我们希望保留的时间间隔。
# cat /tmp/testscript.sh #!/bin/bash wait_period=0 while true do echo "Time Now: `date +%H:%M:%S`" echo "Sleeping for 10 seconds" # Here 300 is 300 seconds i.e. 5 minutes * 60 = 300 sec wait_period=$(($wait_period+10)) if [ $wait_period -gt 300 ];then echo "The script successfully ran for 5 minutes, exiting now.." break else sleep 10 fi done
运行示例脚本
# /tmp/testscript.sh Time Now: 00:27:26 Sleeping for 10 seconds Time Now: 00:27:36 Sleeping for 10 seconds Time Now: 00:27:46 Sleeping for 10 seconds Time Now: 00:27:56 Sleeping for 10 seconds Time Now: 00:28:06 Sleeping for 10 seconds Time Now: 00:28:16 Sleeping for 10 seconds <<output trimmed>> Sleeping for 10 seconds Time Now: 00:31:36 Sleeping for 10 seconds Time Now: 00:31:46 Sleeping for 10 seconds Time Now: 00:31:56 Sleeping for 10 seconds Time Now: 00:32:06 Sleeping for 10 seconds Time Now: 00:32:16 Sleeping for 10 seconds Time Now: 00:32:26 Sleeping for 10 seconds The script successfully ran for 5 minutes, exiting now..