Linux主机建设和运维:Shell脚本实现并发多进程
构建、操作和维护Linux主机:Shell脚本根据需要同时顺序执行多个进程目标执行一些命令或脚本。使用shell脚本循环语句是满足这一需求最直观的方式。然而,常规的 for 或 do while 循环是按顺序执行的。该脚本每个周期花费的时间 * 周期数。在大规模执行的情况下,或者目标指令执行时间较长的情况下,串行执行循环脚本的方式也不能忽视。
为了减少串行循环的执行耗时,自然会想到如何并行解决。除了shell之外,还有一些现成的管理和部署工具如parallel、ansible、puppet、saltstack等可以解决同时运行多个任务的问题。但生产系统一般不允许随意安装新软件,所以我们这里只讨论,不借助工具。使用 shell 脚本同时执行多个任务。
在循环串行执行过程中,脚本每个循环对应的子进程是执行脚本的shell的前台进程。一个 shell 一次只能有一个前台进程。多个执行必须并行执行。进程是指脚本中的循环应该放在执行环境的shell的后台,作为后台进程执行。
根据以下想法查看示例 1:
11。 example 直接在后台执行
我们先看一下循环执行情况。
脚本的循环内容以sleep为例,下同。 do
{
echo "进度$i 睡了 3 秒 zzz…"
睡了 3
}
完成) #显示脚本执行时间
运行结果如下图所示:
可以看到,45秒的脚本执行时间与预期的15轮*3秒一致。
如果再打开一个窗口查看sleeper进程,可以看到一次只有一个sleeper进程在运行:
修改脚本,使用循环和并行执行方式。
vi para-1.sh
| #!/bin/bash Njob=15 for ((i=0; i |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网