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次执行过程全部放到后台执行。这种方式虽然可以实现程序的多进程并发执行,但是我们无法控制运行在后台的进程数。为了实现进程数控制ÿ