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个线程来处理。
本文作者:南哈哈
本文链接:https://www.cnblogs.com/nanruosen/p/16325342.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步