linux shell多进程

1 bash后台运行实现多进程

1.1 command & 后台运行

释放终端命令行,将command命令程序挂到后台继续执行,这样用户就不必等待该程序执行结束后才释放终端命令行,可以一边等待command后台执行一边做其他的事。但是,不可以关闭当前的终端,挂靠在后台的command命令是依赖于当前终端的,当关闭当前终端之后,后台的comman命令也会终止执行。
比如:使用sort指令对一个较大的文件进行排序

$ sort log > log.sorted &

1.2 nohup command & 后台运行

这种方式与之前的区别是,使用nohup来管理后台执行的command程序。这样可以是后台的command程序完全脱离终端,当终端关闭时,后台的command程序会在nohup管理下继续执行。如果你要运行一个非常耗时的程序时,建议使用nohup来管理后台程序。这是因为,当程序运行过程中,终端因为网速不稳定或者其他原因突然中断时,会导致运行中的程序中断。
使用方式:

$ nohup longtime.sh &

程序执行过程中的正常输出以及错误输出都被重定向到程序目录下的nohup.out文件中。也可以使用如下方式来指定重定向输出的文件:

$ nohup longtime.sh > myout 2>&1 &

1.3 后台任务实现多进程

只需将需要多进程执行的程序块全部使用command & 转移到后台执行即可。

#!/bin/bash
start=`date +"%s"`
for (( i=0; i<10; i++ ))
do
    {
        echo "multiprocess"
        sleep 3
    } &  #将上述程序块放到后台执行
done
wait    #等待上述程序结束
end=`date +"%s"`
echo "time: " `expr $end - $start`

使用上述方式,10次执行过程全部放到后台执行。这种方式虽然可以实现程序的多进程并发执行,但是我们无法控制运行在后台的进程数。为了实现进程数控制ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值