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..