Code前端首页关于Code前端联系我们

Linux主机建设和运维:Shell脚本实现并发多进程

terry 2年前 (2023-09-28) 阅读数 94 #未命名
构建、操作和维护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

}

完成) #显示脚本执行时间

运行结果如下图所示:

Linux主机建设和运维:Shell脚本实现并发多进程

可以看到,45秒的脚本执行时间与预期的15轮*3秒一致。

如果再打开一个窗口查看sleeper进程,可以看到一次只有一个sleeper进程在运行:

Linux主机建设和运维:Shell脚本实现并发多进程

修改脚本,使用循环和并行执行方式。

vi para-1.sh

#!/bin/bash

Njob=15

for ((i=0; i

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门