shell模拟进程池
废话不多说,直接上脚本。下面的脚本可以直接执行看效果
#!/bin/bash
#!/bin/bash
set -e # 设置并发数 PROC_NUM=10 # 以主进程PID命名管道文件 FIFO_FILE="/tmp/$$.fifo" # 新建管道文件 mkfifo ${FIFO_FILE} # 生成文件描述符9指向管道文件;"<"表示可读,">"表示可写 exec 9<>${FIFO_FILE} # 向文件描述符中写入设置的并发数量的行数,模拟生成进程池;一行就是一个子进程 for process_num in $(seq ${PROC_NUM}) do echo "$(date +%F\ %T) Processor-${process_num} Info: " >&9 done # 按并发数设置执行任务 for n in $(seq 100) do # 从文件描述符中读取一行,读到后生成子进程向下执行,读不到就等待;模拟进程锁 read -u 9 P { # 子进程执行的实际任务 echo "${P} " sleep(2) # 将从文件描述符中读取的内容重新写回文件描述符;模拟释放进程锁 echo ${P} >&9 } & done wait echo "All Completed" # 删除文件描述符 exec 9>&- # 删除临时管道文件 rm -f ${FIFO_FILE} exit 0
相关推荐
huha 2020-10-16
laisean 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
以梦为马不负韶华 2020-10-20
JohnYork 2020-10-16
Julyth 2020-10-16
applecarelte 2020-10-16
laisean 2020-09-27
flycappuccino 2020-09-27
liguojia 2020-09-27
wangzhaotongalex 2020-09-22
流年浅滩 2020-10-23
liujianhua 2020-10-22
woaimeinuo 2020-10-21
tufeiax 2020-09-03
laisean 2020-09-01
vvu 2020-09-16
libao 2020-09-16
Yyqingmofeige 2020-08-18
zhushixia 2020-08-17