精华内容
下载资源
问答
  • 本文讲解Linux系统中Bash内置的wait命令、语法及wait命令实际用法示例。wait是等待给定作业完成并返回waited for命令的退出状态的命令,由于wait命令会影响当前的Shell执行环境,因此它在大多数Shell中都作为内置...

    本文讲解Linux系统中Bash内置的wait命令、语法及wait命令实际用法示例。wait是等待给定作业完成并返回waited for命令的退出状态的命令,由于wait命令会影响当前的Shell执行环境,因此它在大多数Shell中都作为内置命令实现。

    189e88a58b7a2ef1bbd73dedf5e9ad60.png

    Bash wait命令语法

    内置的wait一般语法采用以下形式:

    wait [options] ID

    ID是流程或作业ID,如果未指定ID,则命令将等待直到所有子后台作业完成。

    wait命令返回最后等待的命令的退出状态。

    例如,要等待使用PID 7654的后台进程,可以使用:

    wait 7654

    当给出多个进程时,该命令等待所有进程完成。

    使用作业规范(“jobspec”)指定作业,这是引用构成作业的流程的一种方式,作业规范以百分比符号开头,后跟作业编号(%n),这是一个例子。在后台运行命令:

    rsync -a /home /tmp/home &

    Shell作业ID(用括号括起来)和进程ID将显示在终端上:

    [2] 54377

    要等待作业,请运行wait命令,然后输入作业规范:

    wait %2

    当使用-n选项调用时,该命令仅等待给定pid或jobspecs中的单个作业完成,并返回其退出状态,如果未提供任何参数,则wait -n等待任何后台作业完成并返回作业退出状态:

    wait -n 45432 54346 76573

    在上面的示例中,wait -n仅显示首先退出的作业的返回状态,它不显示作业的PID,如果要获取返回退出状态的作业pid或jobspec,请使用-p选项将其分配给变量:

    wait -p job_id -n 45432 54346 76573

    -p选项在Bash 5.1中引入,如果您使用的是较旧的Bash版本,则会收到“invalid option”错误。

    -f选项告诉等待每个pid或jobspec实际终止,然后再返回其退出代码,而不是在更改作业状态时返回,仅当启用作业控制时,此选项才有效,默认情况下,仅对交互式提示启用作业控制。

    wait命令用法示例

    通常在生成并行执行的子进程的shell脚本中使用wait。

    为了说明该命令的工作方式,请创建以下脚本:

    #!/bin/bash

    sleep 30 &

    process_id=$!

    echo "PID: $process_id"

    wait $process_id

    echo "Exit status: $?"

    让我们逐行解释代码:

    1、第一行称为shebang,它告诉操作系统使用哪个解释器来解析文件的其余部分。

    3、$!是内部Bash变量,用于在后台存储上一次运行的作业的PID,在此示例中,这是sleep命令的PID,我们将PID存储在变量(process_id)中。

    4、打印PID号。

    5、PID传递给等待命令,该命令等待直到睡眠命令完成。

    6、打印等待命令的退出状态,$?是内部Bash变量,用于保存最后执行的命令的退出状态。

    如果运行脚本,它将打印如下内容:

    PID: 36353

    Exit status: 0

    这是使用-n选项的示例:

    #!/bin/bash

    sleep 3 &

    sleep 30 &

    sleep 5 &

    wait -n

    echo "First job completed."

    wait

    echo "All jobs completed."

    执行脚本后,它会产生3个后台进程,wait -n等待直到第一个作业完成并打印echo语句,等待等待所有子级后台作业完成:

    first job completed

    all jobs completed

    最后一个示例说明了-f选项,打开终端并运行:

    sleep 3600 &

    返回:

    [1] 46671

    等待过程:

    wait 46671

    打开另一个终端并使用kill命令停止该过程:

    kill -STOP 46671

    更改过程状态后,wait命令将完成并返回过程退出代码。

    现在,重复相同的步骤,但是这次使用wait -f $pid:

    sleep 3600 &

    wait -f 46671

    从另一个终端停止该过程:

    kill -STOP 46671

    这次,wait命令将不会完成,它将一直运行,直到睡眠过程终止。

    相关主题

    展开全文
  • Linux中的sleep和wait命令允许你以选定的速度运行命令或在等待任务完成后捕获并显示任务的退出状态。sleep只是在命令之间插入一个定时暂停。wait命令在完成后才通知它已完成。 Sleep命令 sleep 命令会暂停指定的...
    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 命令仅适用于在后台运行的进程。

    展开全文
  • Linux小课堂之Wait命令

    2021-05-11 07:44:29
    原标题:Linux小课堂之Wait命令 wait是一个shell命令,它等待给定进程完成,然后返回其退出状态。Wait命令用于等待特定的进程ID和作业ID并返回其终止状态。在执行大型自动化流程时,我们需要使几个模块等待到上一组...

    原标题:Linux小课堂之Wait命令

    4f50df87998a10526b49534b8a5d4779.png

    wait是一个shell命令,它等待给定进程完成,然后返回其退出状态。Wait命令用于等待特定的进程ID和作业ID并返回其终止状态。

    在执行大型自动化流程时,我们需要使几个模块等待到上一组模块完成并返回数据管道进入下一个模块的数据,在这种情况下,我们可以使用Wait命令直到完成上一个模块。

    Wait命令如何工作?

    Wait命令用于监视先前的进程,取决于先前的进程的返回状态,它将返回退出状态。例如,如果我们要等待完成特定的进程ID 13245,则当进程13245 完成 wait命令返回13245退出状态的返回值时,应使用“ wait 13245”。

    -wait PID(PID-实用程序要等待终止的命令的进程ID)。-wait JID(JID-作业ID,标识要等待的后台进程,仅适用于当前Shell执行环境中的wait调用)。

    Wait 命令的退出状态值取决于最后指定的PID / JID。当任何进程异常终止时,退出状态将大于128。

    当它没有子进程调用并且当前shell知道的所有进程ID都已终止时,Wait命令以0值退出。如果wait命令检测到任何错误,那么它将返回1到126之间的任何值。如果最后一个进程ID是未知的,则wait命令将以值127退出。

    Wait命令示例

    让我们检查一些脚本以了解wait命令的工作方式。

    示例1–带有Wait命令的脚本

    我们有两个脚本,分别称为“ foo.sh”和“ bar.sh”脚本。'Foo.sh'脚本的输出数字介于1到5之间,而'bar.sh'脚本将调用foo.sh并在后台运行它,获取foo.sh的PID并等待其完成,一旦完成,它将启动“ bar.sh”完成循环。

    – foo.sh

    8aa7167a9a82aef92c2892a747393b0f.png

    – bar.sh

    630362be3970a1d3324d1baaa34bb3f4.png

    Result

    bd50ec076576e6148ed2e425c50d94e2.png

    示例2–没有wait命令的脚本

    我们有两个脚本,分别称为“ foo.sh”和“ bar.sh”脚本。'foo.sh'脚本输出的数字介于1到5之间,而bar.sh脚本将调用foo.sh并在后台运行它,但它不会等待foo.sh完成并执行这两个脚本。

    – foo.sh

    42cffef515443ac7c3e25ea664d15d32.png

    – bar.sh

    00fc244b05ff294f3ffb6e80e5f69a18.png

    Result

    99e0cf77fc239544d54680db282f926e.png

    示例3–具有wait命令和返回状态的脚本

    “ bar.sh”脚本将调用foo.sh并在后台运行它,获取foo.sh的PID并等待其完成,一旦完成,它将启动bar.sh循环,最后,返回 foo.sh脚本的退出代码。

    – foo.sh (Exit status = 0)

    - foo.sh

    fd83ada20363c3fb0dbade5fc92c88b0.png

    – bar.sh

    b800fd2fa40278b0d22ed545d3e63807.png

    Result

    4786e742bfa9a369c48090919127bb63.png

    – foo.sh (Exit status = NON Zero)

    - foo.sh

    c510b727985f00e52fe3bc4faea7a4fc.png

    – bar.sh

    008f113619a8662617ce9a427de60610.png

    Result

    a15e5ddf5c53e489cbc486233a131a88.png

    结论

    Wait和Sleep都是操作系统中基于时间的系统调用。我们来看一下wait和sleep命令之间的区别。

    责任编辑:

    展开全文
  • 在linux脚本编程中使用多线程编程,其中wait命令可以实现shell的多线程同步控制。1. 启动后台子任务在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。如下,sleep 10#等待10秒,再...

    在linux脚本编程中使用多线程编程,其中wait命令可以实现shell的多线程同步控制。

    1. 启动后台子任务

    在执行命令后加&操作符,表示将命令放在子shell中异步执行。可以达到多线程效果。如下,

    sleep 10#等待10秒,再继续下一操作

    sleep10 & #当前shell不等待,后台子shell等待

    2. wait命令

    wait是用来阻塞当前进程的执行,直至指定的子进程执行结束后,才继续执行。使用wait可以在bash脚本“多进程”执行模式下,起到一些特殊控制的作用。

    wait  [作业指示或进程号]

    eg:wait 23   or  wait %1

    1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0.

    2.如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务。

    3.在shell中使用wait命令,相当于高级语言里的多线程同步。

    example:

    1.使用wait等待所有子任务结束。

    #!/bin/sh

    echo “1”

    sleep5&echo “3”

    echo “4”

    wait #会等待wait所在bash上的所有子进程的执行结束,本例中就是sleep 5这句

    输出:echo”5”

    2.在函数中使用wait

    #!/bin/bash

    source~/.bashrc

    fun(){

    echo"fun is begin.timeNum:$timeNum"local timeNum=$1sleep $timeNum&wait #这个只等待wait前面sleep

    echo"fun is end.timeNum:$timeNum"}

    fun10 &fun20 &wait #如果fun里面没有wait,则整个脚本立刻退出,不会等待fun里面的sleep

    echo"all is ending"

    输出结果为:

    fun is begin.timeNum:10funis begin.timeNum:20funis end.timeNum:10funis end.timeNum:20allis ending

    展开全文
  • linux shell wait命令详解

    2021-04-13 15:35:53
    wait命令是linux下的一个命令,那么它的语法和用途是什么呢?下面由学习啦小编为大家整理了linux shell wait命令的相关知识,希望大家喜欢!linux shell wait命令wait命令介绍wait [作业指示或进程号]1.等待作业号或者...
  • %iowait并不能反应磁盘瓶颈iowait实际测量的是cpu时间:%iowait=(cpuidletime)/(allcputime)这个文章说明:高速cpu会造成很高的iowait值,但这并不代表磁盘是系统的瓶颈。唯一能说明磁盘是系统瓶颈的方法,就是很高...
  • Linux下mysql修改连接超时1,首先进入mysql,查看 wait_timeout、interactive_timeout这个值是否为默认的8小时(即 28800)[root@server110 ~]# mysql -u root -pEnter password:输密码进入执行如下命令show variables...
  • wait的用法总结大全

    千次阅读 2021-05-23 06:13:01
    wait的意思vt.& vi. 等候,等待,(尤指长期地)希望,盼望vi. 准备妥,在手边,可得到,可使用vt. 推迟,搁置,延缓变形:过去式: waited; 现在分词:waiting; 过去分词:waited;wait用法wait可以用作动词wait的基本...
  • 一、wait 函数原型: #include <sys/types.h> /* 提供类型pid_t的定义 */ #include <sys/wait.h> pid_t wait(int *status) 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子...
  • pid_t wait (int* status) . 参数是一个指针类型,但是该指针类型并不是要传递一个指针参数,而是一个输出型参数; . 将wait函数内部计算的某个结果通过status变量返回给调用者; . 之前所接触的输出型参数有:swap...
  • wait:等待匹配的字符串. 例1.30s內等到出現error 執行 xx timeout = 30 wait 'error' ;timeout if result=0 then sendln "timeout" ;error has received elseif result=1 then sendln "error happened...
  • shell脚本编写技巧"1.test测试命令test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,其测试符和相应的功能分别如下:(1)数值测试:-eq:等于则为真-ne:不等于则为真-gt:大于则为真-...
  • 中间涉及到多次调用含有cmd命令的方法,结果在执行最后的cmd命令时,Process.waitFor()返回值为128(当返回值为0时,表示正常执行) 1,错误代码如下 GitUtil import java.io.*; public class GitUtil { ...
  • Java虚拟机执行Runtime.getRuntime().exec()方法的过程是:首先克隆一个和当前虚拟机拥有一样环境变量的进程,再用这个进程去执行外部命令,最后再退出这个进程。如果频繁执行这个操作,系统消耗会很大,不仅是CPU,...
  • 数据库第五章结构化程序设计第五章 结构化程序设计一、选择题1、WAIT命令用于让用户输入一个 B 。A)数字 B)字符 C)字符串 D)以上都是2、在交互式输入命令中,可以接受逻辑型数据的命令包括__C____。A)INPUT和ACCEPT ...
  • java执行shell命令使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util....
  • wait命令的官方解释如下: wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job specification; if a job spec is given, all processes in that job's ...
  • (netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr1.netstat命令详解其实我常用的是 netstat -tnl | grep 443 ...
  • 来自:http://blog.csdn.net/shootyou/article/details/6622226昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程...在服务器的日常维护过程中,会经常用到下面的命令:netstat-n|awk'/^tcp/{++S[$NF]}E...
  • 基础篇:Linux 常用命令总结

    万次阅读 多人点赞 2021-08-29 19:25:39
    3️⃣ wait命令 – 等待指令 4️⃣ bc命令 – 浮点运算 5️⃣ history命令 – 显示与操纵历史命令 扩展:知识干货 前言 为什么要学习 Linux 命令? 目前企业有超过 80% 甚至更多的系统都是 Linux 操作系统,所以不管...
  • 先说结论 应该达成jar包 使用java -jar 命令启动jar包 再进行命令 大部都是windows 下 在idea环境下直接运行项目 然后再使用cmd 运行JStack 命令 结果会报错 是因为环境版本不一致 一个32位的一个是64位的 ...
  • 查看TIME_WAIT和CLOSE_WAIT数的命令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'它会显示例如下面的信息:TIME_WAIT 、CLOSE_WAIT 、FIN_WAIT1 、ESTABLISHED 、SYN_RECV 、LAST_ACK...
  • 在服务器的日常维护过程中,会经常用到下面的命令:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’其中$NF表示最后一个字段它会显示例如下面的信息:TIME_WAIT 814CLOSE_WAIT 1FIN_WAIT1 ...
  • netstat下time_wait状态的tcp连接:1.这是一种处于连接完全关闭状态前的状态;2.通常要等上4分钟(windows server)的时间才能完全关闭;3.这种状态下的tcp连接占用句柄与端口等资源,服务器也要为维护这些连接状态...
  • bitsCN.commysql修改wait_timeoutmysql mysql> show global variables like 'wait_timeout';其默认值为8小时mysql的一个connection空闲时间超过8小时,mysql会自动断开该连接。1.修改配置 vi /etc/my.cnf [mysqld...
  • Linux wait函数详解

    2021-05-13 03:26:02
    wait和waitpid出现的原因SIGCHLD--当子进程退出的时候,内核会向父进程SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止)--子进程退出时,内核将子进程置为僵尸状态,这个进程成为僵尸...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 273,412
精华内容 109,364
关键字:

wait命令