Linux Shell多进程并发
核心原理将命令放到后台执行Shell 不等待它结束立即返回。wait等待所有后台任务结束。( ... ) 用子 shell 包装一组命令然后后台执行。shell的元字符提供了在后台运行不需要键盘输入的程序的方法。输入命令后其后紧跟字符该命令就会被送往到linux后台执行而终端又可以继续输入下一个命令了。1. 简单并发sh a.sh sh b.sh sh c.sh 这三个命令就会被同时送往linux后台执行在这个程度上认为这三个命令并发执行了。shell脚本里实现并发操作技能点for循环后台运行符wait等待所有子进程结束2. 批量 ping 并发for ip in 192.168.56.{1..254} do ( ping $ip -c 4 /dev/null if [ $? -eq 0 ]; then echo $ip is alive fi ) done wait这会导致254 个进程同时 ping可能会触发系统限制或网络拥塞。wait等待所有后台子程序执行完毕3.分批并发您贴的最后一个例子只让for循环中某条指令多进程执行for ((i0; i$cishu; i)) do start_num$(expr $i \* $rsnum $i) end_num$(expr $start_num $rsnum) for j in seq $start_num $end_num do create_dir $j done wait # 等这一批全部完成再进入下一批 done这是“分批串行 组内并发”模式。更简单的并发数控制使用xargs或parallel# 使用 xargs系统自带轻量 seq 1 254 | xargs -I {} -P 10 ping -c 1 192.168.56.{} /dev/null echo {} is alive # 使用 GNU parallel需要安装 parallel -j 10 ping -c 1 192.168.56.{} /dev/null echo {} is alive ::: {1..254}性能监控与优化在并发执行时可以监控系统资源使用情况# 查看CPU使用情况 top -b -n 1 | head -n 12 # 查看内存使用情况 free -m # 查看磁盘I/O iostat -x 1 3根据监控结果动态调整并发进程数量以获得最佳性能。参考资料Linux Shell多进程并发以及并发数控制 - 简书bash shell实现并发多进程操作_bash 多进程并发_低调小一的博客-CSDN博客