shell多个脚本同时执行
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/%d date取"月/日"的命令行。
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收养.
运维的戏子
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/%d date取"月/日"的命令行。 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收养. 运维的戏子