每天学一点儿shell:shell脚本的异步执行

shell管道"|"

管道用法: command1 | command2 | command3 等等
用法举例:

[root@hadoop-master shell-test]# ps -ef|grep java
root       5304   2878  0 05:58 pts/1    00:00:00 grep --color=auto java

简单理解就是把前一个命令的输出结果当为下一个命令的数据入参,用管道比较形象,数据像水流一样从一个水管流到下一个水管。
再举个例子:

[root@hadoop-master shell-asy]# ls -s|sort -nr
4 test3.sh
4 test2.sh
4 test1.sh
4 start-syn.sh
4 start-asy.sh
总用量 20

-s是file size,-n是numeric-sort,-r是reverse,反转
这个命令就是将文件按照数据文件的大小按照从大到小进行排序并输出。

shell并行执行"&"

shell 通过“&”来并行执行shell脚本,相当于每一个脚本都是单独的进程。
举例如下:
脚本1

[root@hadoop-master shell-asy]# cat test1.sh 
#!/bin/bash
echo "脚本1开始执行 "`date +"%Y%m%d %H:%M:%S"`
sleep 5
echo "脚本1执行结束 "`date +"%Y%m%d %H:%M:%S"`

脚本2

[root@hadoop-master shell-asy]# cat test2.sh 
#!/bin/bash
echo "脚本2开始执行 "`date +"%Y%m%d %H:%M:%S"`
sleep 3
echo "脚本2执行结束 "`date +"%Y%m%d %H:%M:%S"`

脚本3

[root@hadoop-master shell-asy]# cat test3.sh 
#!/bin/bash
echo "脚本3开始执行 "`date +"%Y%m%d %H:%M:%S"`
sleep 5
echo "脚本3执行结束 "`date +"%Y%m%d %H:%M:%S"`

异步运行脚本start-asy.sh

[root@hadoop-master shell-asy]# cat start-asy.sh 
#!/bin/bash
echo "并行执行"
sh ./test1.sh &
sh ./test2.sh &
sh ./test3.sh &

wait
echo "主线程执行结束"

执行结果如下:

[root@hadoop-master shell-asy]# sh start-asy.sh 
并行执行
脚本1开始执行 20200917 07:21:00
脚本2开始执行 20200917 07:21:00
脚本3开始执行 20200917 07:21:00
脚本2执行结束 20200917 07:21:03
脚本1执行结束 20200917 07:21:05
脚本3执行结束 20200917 07:21:05
主线程执行结束

shell串行执行"&&"

shell中默认的就是串行执行脚本,如果将两条命令合并成一条执行可以加&&作为连接
例如:执行脚本并输出执行时间

[root@hadoop-master shell-asy]# cat start-syn.sh 
#!/bin/bash
echo "串行执行"
sh ./test1.sh
sh ./test2.sh
sh ./test3.sh

下面是顺序执行脚本并输出执行时间

[root@hadoop-master shell-asy]# sh start-syn.sh && date +"%Y-%m-%d %T" 
串行执行
脚本1开始执行 20200917 07:26:52
脚本1执行结束 20200917 07:26:57
脚本2开始执行 20200917 07:26:57
脚本2执行结束 20200917 07:27:00
脚本3开始执行 20200917 07:27:00
脚本3执行结束 20200917 07:27:05
2020-09-17 07:27:05
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leo825...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值