我是靠谱客的博主 昏睡月饼,最近开发中收集的这篇文章主要介绍每天学一点儿shell:shell脚本的异步执行shell管道"|"shell并行执行"&"shell串行执行"&&",觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • shell管道"|"
  • 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

最后

以上就是昏睡月饼为你收集整理的每天学一点儿shell:shell脚本的异步执行shell管道"|"shell并行执行"&"shell串行执行"&&"的全部内容,希望文章能够帮你解决每天学一点儿shell:shell脚本的异步执行shell管道"|"shell并行执行"&"shell串行执行"&&"所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部