1、编写多进程实验脚本 demo.sh

#!/bin/bash

>sub1.log;>sub2.log;>sub3.log

function sub1

{

for i in {1..5}

do

echo `date +%T` >> sub1.log #注意date 和+号之间有空格。如:date +%m/%ddate取"月/日"的命令行。

sleep 1

done

}

function sub2

{

for i in {1..5}

do

echo `date +%T` >> sub2.log

sleep 1

done

}

function sub3

{

for i in {1..5}

do

echo `date +%T` >> sub3.log

sleep 1

done

}

sub1

sub2

sub3

2、执行实验脚本

[root@Svr23 Mornitor]# ./demo

[root@Svr23 Mornitor]# cat sub1.log

11:11:51

11:11:52

11:11:53

11:11:54

11:11:55

[root@Svr23 Mornitor]# cat sub2.log

11:11:56

11:11:57

11:11:58

11:11:59

11:12:00

[root@Svr23 Mornitor]# cat sub3.log

11:12:01

11:12:02

11:12:03

11:12:04

11:12:05

发现三个sub子函数是依次执行,总共需要15s

3、调整修改一下脚本,将sub子函数加入到后台执行。

[root@Svr23 Mornitor]# vi demo.sh

..........

sub1&

sub2&

sub3&

再次执行实验脚本

[root@Svr23 Mornitor]# ./demo

[root@Svr23 Mornitor]# cat sub1.log

11:12:24

11:12:25

11:12:26

11:12:27

11:12:28

[root@Svr23 Mornitor]# cat sub2.log

11:12:24

11:12:25

11:12:26

11:12:27

11:12:28

[root@Svr23 Mornitor]# cat sub3.log

11:12:24

11:12:25

11:12:26

11:12:27

11:12:28

发现三个sub子函数是并行执行,总共需要5s,速度大大提高

分析:shell是fork()+exec()来处理子命令,3个进程并发执行.主shell退出后,三个进程都会被init收养.

Logo

更多推荐