文章目录
shell管道"|"shell并行执行"&"shell串行执行"&&"shell管道"|"
管道用法:command1 | command2 | command3
等等
用法举例:
[root@hadoop-master shell-test]# ps -ef|grep javaroot 5304 2878 0 05:58 pts/1 00:00:00 grep --color=auto java
简单理解就是把前一个命令的输出结果当为下一个命令的数据入参,用管道比较形象,数据像水流一样从一个水管流到下一个水管。
再举个例子:
[root@hadoop-master shell-asy]# ls -s|sort -nr4 test3.sh4 test2.sh4 test1.sh4 start-syn.sh4 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/bashecho "脚本1开始执行 "`date +"%Y%m%d %H:%M:%S"`sleep 5echo "脚本1执行结束 "`date +"%Y%m%d %H:%M:%S"`
脚本2
[root@hadoop-master shell-asy]# cat test2.sh #!/bin/bashecho "脚本2开始执行 "`date +"%Y%m%d %H:%M:%S"`sleep 3echo "脚本2执行结束 "`date +"%Y%m%d %H:%M:%S"`
脚本3
[root@hadoop-master shell-asy]# cat test3.sh #!/bin/bashecho "脚本3开始执行 "`date +"%Y%m%d %H:%M:%S"`sleep 5echo "脚本3执行结束 "`date +"%Y%m%d %H:%M:%S"`
异步运行脚本start-asy.sh
[root@hadoop-master shell-asy]# cat start-asy.sh #!/bin/bashecho "并行执行"sh ./test1.sh &sh ./test2.sh &sh ./test3.sh &waitecho "主线程执行结束"
执行结果如下:
[root@hadoop-master shell-asy]# sh start-asy.sh 并行执行脚本1开始执行 07:21:00脚本2开始执行 07:21:00脚本3开始执行 07:21:00脚本2执行结束 07:21:03脚本1执行结束 07:21:05脚本3执行结束 07:21:05主线程执行结束
shell串行执行"&&"
shell中默认的就是串行执行脚本,如果将两条命令合并成一条执行可以加&&作为连接
例如:执行脚本并输出执行时间
[root@hadoop-master shell-asy]# cat start-syn.sh #!/bin/bashecho "串行执行"sh ./test1.shsh ./test2.shsh ./test3.sh
下面是顺序执行脚本并输出执行时间
[root@hadoop-master shell-asy]# sh start-syn.sh && date +"%Y-%m-%d %T" 串行执行脚本1开始执行 07:26:52脚本1执行结束 07:26:57脚本2开始执行 07:26:57脚本2执行结束 07:27:00脚本3开始执行 07:27:00脚本3执行结束 07:27:05-09-17 07:27:05
如果觉得《每天学一点儿shell:shell脚本的异步执行》对你有帮助,请点赞、收藏,并留下你的观点哦!