Shell中的wait命令及并发的实现

sleep 和 wait

shell多线程

  并发的实现{}&

 

sleep 和 wait

  在 shell 中使用 wait 是在等待上一批或上一个脚本执行完 (即上一个进程终止),在执行 wait 之后的命令。

  sleep 是使用系统休眠一定的时间之后再去执行下面的任务。

 

  wait [进程号或作业号]

wait 22 等待22进程完在执行下面的任务
wait %1 第一个作业

    如果 wait 后面不带任何的进程号或者作业号,那么 wait 会直至当前 shell 中进程的所有子进程都执行结束后,才继续执行下一步。

 

shell脚本多线程

#!/bin/bash

start_time=$(date +%s) #从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数(时间戳)
for ((i=1;i<=1000;i++))
do
    {
    sleep 5s  #该命令是用来测试的命令,此处为实际执行的命令
    echo "$i"
    }&
done
wait  #等待1000个后台任务全部执行完成之后,再继续执行以下脚本
end_time=$(date +%s)
echo "TIME: $(expr $end_time - $start_time)"

    用 {} 把循环体括起来,后加一个 & 符号,代表每次循环都把命令放入后台执行,一旦放入后台,就意味着 {} 里面的命令交给操作系统的一个线程处理了,循环了1000次,就有1000个 & 把任务放入后台,操作系统会并发1000个线程来处理

 

posted @ 2022-05-29 23:40  南哈哈  阅读(497)  评论(0)    收藏  举报