您的位置:首页 > 运维架构 > Shell

shell笔记-shell中如何实现多线程

2016-11-12 14:38 253 查看
最近给双十一晚会做直播,并且双十一红包一角标广告形式投放出去,在预热阶段需要看下效果,数据团队没法给出一些指标数据,需要我们自己做数据分析给出,平时shell使用的少,很多数据分析的命令忘记了,趁此机会总结下:
nohup
可以在退出、注销账户、关闭终端的情况下程序仍然可以在后台运行,默认情况下的所有输出都被重定向到一个名为
nohup.out的文件中,除非指定了文件。
如:
该命令的一般形式为:nohup command &

url=nohup
command > myout.file 2>&1 &


我用到的如

nohup  ./red-run.sh  20161024 >red-run.sh.20161024.log 2>&1 &

&后台运行
 只要终端关闭,程序即停止运行,不能做到真正的后台运行

冒号用法
冒号标示空语句,首先冒号可以表示永真(相当于TRUE关键字)如while :;do...done(while循环的条件始终为真);其次冒号可以清空一个文件,:>log将冒号重定向到文件,log文件内容被清空,所以:>命名是常用的清空文件的命令;接着冒号最重要的用法是:不做任何事,只做参数展开。

子shell
()圆括号结构:能强制将其中的命令运行在子shell中
子shell只能继承父shell的一些属性,而子shell不可能反过来改变父shell的属性。子shell能够从父shell继承得来的属性有:当前的工作目录、环境变量、标准输入输出和错误输出、所有已打开的文件描述符、忽略的信号。

wait
wait是一个内建命令,用于等待后台执行的作业全部完成后再执行下面的命令,使用wait在shell中实现了多线程的同步功能

例如:

#!/bin/bash
sleep 10 &
sleep 5&
wait #等待10秒后,退出

例如2:

#!/bin/bash
sleep 10 &
sleep 5&
wait $! #$!表示上个子进程的进程号,wait等待一个子进程,等待5秒后,退出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息