Linux 中的 sleep 和 wait 命令容许你以选定的速度运行命令或在期待工作实现后捕捉并显示工作的退出状态。sleep 只是在命令之间插入一个定时暂停。wait 命令在实现后才告诉它已实现。
Sleep 命令
sleep 命令会暂停指定的工夫。它通常用于脚本中,但也实用于命令行。在上面的示例中,sleep 在两个 date 命令之间暂停 30 秒。
[root@localhost ~]# date ; sleep 30 ; date
Thu Nov 11 05:06:44 EST 2021
Thu Nov 11 05:07:14 EST 2021
Linux 中 Sleep 和 Wait 命令的应用形式 Linux 中 Sleep 和 Wait 命令的应用形式
sleep 命令将数字参数作为秒数。但也能够通过在参数中增加一个字符来让它休眠不同的工夫:
10s = 10 seconds
1m = 1 minute
2h = 2 hours
3d = 3 days
[root@localhost ~]# date ; sleep 10s ; date
Thu Nov 11 05:11:09 EST 2021
Thu Nov 11 05:11:19 EST 2021
睡眠工夫也能够小于 1 秒钟,就是在数字后面加一个..
.1 = 十分之一秒
.01 = 百分之一秒
.001 = 千分之一秒
[root@localhost ~]# date ; sleep .1 ; date
Thu Nov 11 05:14:03 EST 2021
Thu Nov 11 05:14:03 EST 2021
sleep 命令通常用于定期运行命令,例如每 10 秒或每分钟一次,当你想要监督某些流动时。例如,可能正在期待共事登录文件服务器。您可能会运行这样的命令:
[root@localhost ~]# while true ; do who ; sleep 100 ; done
Linux 中 Sleep 和 Wait 命令的应用形式 Linux 中 Sleep 和 Wait 命令的应用形式
能够察看内存应用状况的变动。
[root@localhost ~]# while true ; do free -h ; sleep 5 ; done
Linux 中 Sleep 和 Wait 命令的应用形式 Linux 中 Sleep 和 Wait 命令的应用形式
Wait 命令
wait 命令在期待后盾过程实现后捕捉后盾过程的退出状态。您也能够在脚本中应用它。将 sleep 命令替换为要期待的过程。此脚本还显示退出状态。
!/bin/bash
sleep 5 &
process_id=$!
echo“PID: $process_id”
wait $process_id
echo“Exit status: $?”
第一行在后盾启动 sleep 命令。第二行获取最近执行的后盾过程的过程 ID$!。而后脚本显示该信息,期待该过程实现并显示退出状态。
如果应用 wait -n(不须要额定的参数),wait 将期待任何后台任务实现。在上面的示例中,sleep 6 命令首先实现,脚本完结,但其余两个 sleep 过程将持续在后盾运行几秒钟。
!/bin/bash
sleep 15 &
sleep 9 &
sleep 6 &
wait -n
echo“First job has been completed.”
如果改成以下脚本,它会在每个睡眠过程实现时通知你。因为工夫关系,这将依照与睡眠过程开始时相同的程序产生。
!/bin/bash
sleep 15 &
sleep 9 &
sleep 6 &
wait -n
echo“First job has been completed.”
wait -n
echo“Next job has been completed.”
wait
echo“All jobs have been completed.”
留神:期待的过程必须是“子过程”(在以后 shell 中启动的过程)。
总结
两者都能够在脚本或命令行中应用。然而,wait 命令仅实用于在后盾运行的过程。