Linux 系统中 Sleep 和 Wait 命令的使用方式

Linux 系统中 Sleep 和 Wait 命令的使用方式

Linux 中的sleep和wait命令允许你以选定的速度运行命令或在等待任务完成后捕获并显示任务的退出状态。sleep只是在命令之间插入一个定时暂停。wait命令在完成后才通知它已完成。

Sleep命令

sleep 命令会暂停指定的时间。它通常用于脚本中,但也适用于命令行。在下面的示例中, sleep 在两个 date 命令之间暂停30秒。

  1. [root@localhost ~]# date ; sleep 30 ; date
  2. Thu Nov 11 05:06:44 EST 2021
  3. Thu Nov 11 05:07:14 EST 2021

Linux 系统中 Sleep 和 Wait 命令的使用方式

sleep 命令将数字参数作为秒数。但也可以通过在参数中添加一个字符来让它休眠不同的时间:

  • 10s = 10 seconds
  • 1m = 1 minute
  • 2h = 2 hours
  • 3d = 3 days
  1. [root@localhost ~]# date ; sleep 10s ; date
  2. Thu Nov 11 05:11:09 EST 2021
  3. Thu Nov 11 05:11:19 EST 2021

睡眠时间也可以小于1秒钟,就是在数字前面加一个..

  • .1 = 十分之一秒
  • .01 = 百分之一秒
  • .001 = 千分之一秒
  1. [root@localhost ~]# date ; sleep .1 ; date
  2. Thu Nov 11 05:14:03 EST 2021
  3. Thu Nov 11 05:14:03 EST 2021

sleep 命令通常用于定期运行命令,例如每 10 秒或每分钟一次,当你想要监视某些活动时。例如,可能正在等待同事登录文件服务器。您可能会运行这样的命令:

  1. [root@localhost ~]# while true ; do who ; sleep 100 ; done

Linux 系统中 Sleep 和 Wait 命令的使用方式

可以观察内存使用情况的变化。

  1. [root@localhost ~]# while true ; do free -h ; sleep 5 ; done

Linux 系统中 Sleep 和 Wait 命令的使用方式

Wait命令

wait 命令在等待后台进程完成后捕获后台进程的退出状态。您也可以在脚本中使用它。将 sleep 命令替换为要等待的进程。此脚本还显示退出状态。

  1. #!/bin/bash
  2. sleep 5 &
  3. process_id=$!
  4. echo “PID: $process_id”
  5. wait $process_id
  6. echo “Exit status: $?”

第一行在后台启动 sleep 命令。第二行获取最近执行的后台进程的进程 ID$!。然后脚本显示该信息,等待该进程完成并显示退出状态。

如果使用 wait -n(不需要额外的参数),wait 将等待任何后台任务完成。在下面的示例中, sleep 6 命令首先完成,脚本结束,但其他两个 sleep 进程将继续在后台运行几秒钟。

  1. #!/bin/bash
  2. sleep 15 &
  3. sleep 9 &
  4. sleep 6 &
  5. wait -n
  6. echo “First job has been completed.”

如果改成以下脚本,它会在每个睡眠过程完成时告诉你。由于时间关系,这将按照与睡眠过程开始时相反的顺序发生。

  1. #!/bin/bash
  2. sleep 15 &
  3. sleep 9 &
  4. sleep 6 &
  5. wait -n
  6. echo “First job has been completed.”
  7. wait -n
  8. echo “Next job has been completed.”
  9. wait
  10. echo “All jobs have been completed.”

注意:等待的进程必须是“子进程”(在当前 shell 中启动的进程)。

总 结

两者都可以在脚本或命令行中使用。但是,wait 命令仅适用于在后台运行的进程。

Linux 系统中 Sleep 和 Wait 命令的使用方式

原文链接:https://mp.weixin.qq.com/s/k3wAVUwJBrh2LCb-20BVaQ

原创文章,作者:RNVVG,如若转载,请注明出处:http://www.wangzhanshi.com/n/8128.html

(0)
RNVVG的头像RNVVG
上一篇 2025年1月1日 16:34:11
下一篇 2025年1月1日 16:34:15

相关推荐

  • Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法

    Linux 出现telnet: connect to address 127.0.0.1: Connection refused错误解决办法 没有xinetd服务: 1、/etc/…

    Linux 2025年1月1日
  • Linux下用C获取当前时间

    Linux下用C获取当前时间,具体如下: 代码(可以把clock_gettime换成time(NULL)) ? void getNowTime() {  timespec time…

    Linux 2025年1月1日
  • 2021 年优秀的六款 Linux 发行版

    在跨入新年之际,大家估计都在忙着做年终总结。当然虫虫没有做年终总结的传统,也最头疼这类事情。但是在这不平凡一年完结之季稍微总结某一个方面的东西还是值得。我们要做的就是总结一下202…

    2025年1月1日
  • Linux进程基础教程详解

    计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令 (instruction)。所谓的程序(progra…

    2025年1月1日
  • 详解linux SSH登录流程

    本文给大家详细介绍了ssh 密钥登录远程服务器流程和注意事项,以下是详细内容: 密钥登录比密码登录安全,主要是因为他使用了非对称加密,登录过程中需要用到密钥对。整个登录流程如下: …

    Linux 2025年1月1日
  • 在Linux里安装和启动nginx的方法

    Nginx是高性能的web服务器也是非常好用反向代理服务器,可以实现负载均衡,动静分离等策略,在linux下用的非常多。 由于nginx依赖于pcre和zlib,所以在安装ngin…

    Linux 2025年1月1日
  • linux烧写、配置、搭建Edison环境

    小编发现很多朋友在linux上烧写、配置、搭建edison环境的时候出现过很多问题,基本上很多人使用setup tool for ubuntu,小编在此先提醒各位,千万别用! 首先…

    2025年1月1日
  • Linux进程间通信方式之socket使用实例

    套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。 套接字的特性有三个属性确定,它们是:域(domain),类型(type),…

    Linux 2025年1月1日
  • Linux ssh远程连接断开问题处理办法解决

    我们在通过远程连接操作Linux server的时候,有可能过一段时间忘记操作,便会发生ssh断开的问题。 而如果是本地的server,比较好办,直连设备kill掉ssh,踢掉无效…

    2025年1月1日
  • Linux 在Shell脚本中使用函数实例详解

    Linux 在Shell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。 函数格式如下: ? 函数名() {   …

    Linux 2025年1月1日

发表回复

登录后才能评论