shell腳本多進程

 

shell腳本再執行過程當中就一個進程,從頭至尾shell

下面配置shell腳本執行過程當中啓動多個進程同時執行bash

#!/bin/bash

for ((i=1;i<=10;i++))
do
(
  echo "$i"
  sleep 10
) &
done
wait
echo -E "########## $SECONDS ##########"

注:spa

$SECONDS:是執行完腳本所用的時間   blog

wait:是等待全部的進程執行完畢進程

執行結果   it

[root@wcy ~]# bash test.sh 
1
2
3
4
5
6
7
8
9
10
########## 10 ##########

進程查看多進程

[root@wcy ~]# ps -ef | grep test.sh 
root 1764 1565 0 19:23 pts/1 00:00:00 bash test.sh
root 1765 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1766 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1767 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1770 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1772 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1773 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1774 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1776 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1777 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1778 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1786 1708 0 19:23 pts/2 00:00:00 grep test.sh

 

[root@wcy ~]# ps -ef | grep test.sh | grep -v grep | wc -l
11

查看同一時刻多少個sleep在跑class

[root@wcy ~]# ps -ef | grep sleep | grep -v grep 
root 2168 2165 0 21:59 pts/1 00:00:00 sleep 10
root 2169 2166 0 21:59 pts/1 00:00:00 sleep 10
root 2172 2167 0 21:59 pts/1 00:00:00 sleep 10
root 2174 2171 0 21:59 pts/1 00:00:00 sleep 10
root 2175 2173 0 21:59 pts/1 00:00:00 sleep 10
root 2176 2170 0 21:59 pts/1 00:00:00 sleep 10
root 2179 2177 0 21:59 pts/1 00:00:00 sleep 10
root 2181 2178 0 21:59 pts/1 00:00:00 sleep 10
root 2182 2180 0 21:59 pts/1 00:00:00 sleep 10
root 2184 2183 0 21:59 pts/1 00:00:00 sleep 10

  

[root@wcy ~]# ps -ef | grep sleep | grep -v grep  | wc -l
10

多進程的shell腳本能夠用於並行執行多任務test

#!/bin/bash
for ((i=1;i<=1;i++))
do
(
for ((num=1;num<=100;num++))
do
  echo "task1-- $num"
  sleep 1
done
) &
(
for ((ber=1;ber<=100;ber++))
do
  echo "task2-- $ber"
  sleep 1
done
) &
done
wait

效果,兩個同時執行配置

[root@wcy ~]# bash duo.sh 
task2-- 1
task1-- 1
task2-- 2
task1-- 2
task2-- 3
task1-- 3
task2-- 4
task1-- 4
········

腳本進程

[root@wcy ~]# ps -ef | grep duo.sh | grep -v grep 
root 2221 1491 0 22:13 pts/0 00:00:00 bash duo.sh
root 2222 2221 0 22:13 pts/0 00:00:00 bash duo.sh
root 2223 2221 0 22:13 pts/0 00:00:00 bash duo.sh

同時執行的進程

[root@wcy ~]# ps -ef | grep sleep | grep -v grep 
root 2357 2223 0 22:14 pts/0 00:00:00 sleep 1
root 2358 2222 0 22:14 pts/0 00:00:00 sleep 1
相關文章
相關標籤/搜索