shell中的wait命令及并发的实现{}&

2021-04-02  本文已影响0人  atdoking

sleep 和wait

在 shell 中使用 wait 是在等待上一批或上一个脚本执行完(即上一个的进程终止),再执行wait之后的命令。
sleep是使系统休眠一定的时间之后再去执行下面的任务。

wait [进程号或作业号]

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

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

shell脚本多线程


#!/bin/bash
 
start_time=$(date +%s)
 
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个线程来处理.

上一篇下一篇

猜你喜欢

热点阅读