从事Linux主机建设和运维的同事们在工作中应该经常会遇到批量修改配置信息或部署应用环境的需求,需要根据需求依次登录目标主机执行一些命令或脚本,使用shell脚本的循环语句是实现这一需求最直观方式。但是普通的for或do while循环都是串行执行的,脚本耗时每个循环耗时*循环次数,在较大规模实施或者目标语句耗时较长的情况下,串行方式的循环脚本执行时间也不容忽视。
要减少执行串行循环的耗时,自然要考虑如何用并行方式解决。在shell之外有一些现成的管理部署工具如parallel、ansible、puppet、saltstack都能解决并发执行多任务的问题,但生产系统一般不允许随意安装新软件,因而我们这里只讨论不借助工具,只使用shell脚本如何实现并发执行多任务。
串行执行循环时,脚本中每一次循环对应的子进程都是脚本执行所处shell的前台进程,同一时间一个shell只能有一个前台进程,要做到并行执行多个进程,意味着脚本中的循环要放到执行环境shell的后台,作为后台进程去执行。
根据这个思路来看一下例1:
1例1 直接使用后台执行
先来看下循环串行执行的情况。
脚本的循环内容以sleep为例,下同。
vi para-0.sh
#!/bin/bash
Njob=15 #任务总数
for ((i=0; i
相关推荐
大家好,我是 杰哥编程 一文彻底带你搞懂SPI通信原+TFT彩屏控制原理 驱动ic : st7735s (搞不懂立刻改名杰弟编程) 代码已经放在我的gitee仓库了 记得下载 欢迎关注我的Gitee仓库:gitee.com/wrj12138/em… uart 1 首先来讲讲什么是uart? 通用串行异步通讯协议 UART没有时钟信号,无法控制何时发送数据, 也无法保证双发按照完全相同的速度接收数据
如果你想了解 Linux 服务器在重压之下的运行情况,那么给 Linux 服务器施加压力是个不错的主意。在这篇文章中,我们将看一些工具,可以帮助你增加服务器压力并衡量结果。 为什么你会想给你的 Linux 系统施加压力呢?因为有时你可能想知道当一个系统由于大量运行的进程、繁重的网络流量、过多的内存使用等原因而承受很大的压力时,它的表现如何。这种压力测试可以帮助确保系统已经做好了 “上市” 的准备。
前言 :Debian作为一种流行的Linux发行版,被广泛应用于服务器和个人计算机,本文将详细介绍如何在计算机上安装Debian 8,以便您能够充分利用Debian的功能和优势。 准备安装 在开始安装Debian 8之前,您需要做一些准备工作,您需要下载Debian 8的安装映像,并将其烧录到光盘或USB闪存驱动器中,您需要确保计算机的BIOS设置已正确配置,以便从光盘或USB驱动器启动。 安装过
Snap 是 Canonical 开发的一个工具,用于在 Linux 上进行包管理和软件部署。Snap 基本上会处理所有依赖项本身。单个构建的 snap 可以在不同的 Linux 发行版上运行。Snap 以某种方式捆绑应用程序,这种方式是自包含的、跨平台的,并且没有任何依赖关系。 在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 Snap apt步骤 1. 首先,通过在
(图片来源网络,侵删) 前言 深度Linux是一款基于Ubuntu的开源操作系统,它提供了简洁美观的用户界面和丰富的应用程序,受到了众多用户的喜爱。本文将介绍深度Linux系统的安装过程,帮助您快速上手。 准备工作 在安装深度Linux系统之前,您需要准备以下材料: (图片来源网络,侵删) 1. 一台计算机:确保计算机的硬件配置满足深度Linux的最低要求。 2. 深度Linux系统镜像文件:您可
回到顶部
|