1、編寫多程序實驗指令碼 demo.sh
#!/bin/bash
>sub1.log;>sub2.log;>sub3.log
function sub1
doecho `date +%t` >> sub1.log #注意date 和+號之間有空格。如:
date +
%m/%d
date取"月/日"的命令列。
sleep 1
done }
function sub2
doecho `date +%t` >> sub2.log
sleep 1
done }
function sub3
doecho `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收養.
運維的戲子
乙個sh指令碼 同時執行 多個sh指令碼
原來的啟動方式 cd opt openimscore pcscf.sh icscf.sh scscf.sh cd opt openimscore fhoss deploy startup.sh太過麻煩了,希望只執行乙個指令碼啟動所有的指令碼。在 opt openimscore 下,用乙個指令碼進行啟...
如何避免shell指令碼被同時執行多次
比如說有乙個週期性 cron 備份mysql的指令碼,或者rsync指令碼,如果出現意外,執行時間過長,很有可能下乙個備份週期已經開始了,當前週期的指令碼卻還沒有執行完,顯然我們都不願意看到這樣的情況發生。其實只要對指令碼自身做一些改動,就可以避免它被重複執行。bin bash lock name ...
windows中同時執行多個scrapy爬蟲
1.在你的scrapy工程下面新建乙個與spiders平級的目錄commands cd path to your project mkdir commands 2.在commands下面新增乙個檔案crawlall.py,如下 from scrapy.command import scrapycom...