shell多個指令碼同時執行

2021-09-20 23:34:00 字數 1647 閱讀 8722

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...