从事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
相关推荐
LINUX系统在企业中越来越受欢迎,其中Ubuntu作为一款开源的LINUX操作系统,也逐渐成为企业用户的选择。对于企业而言,使用AD(Active Directory)是不可避免的。Ubuntu能用AD吗?这是一个值得探讨的问题。本文将详细介绍Ubuntu与AD的兼容性,以及如何在Ubuntu中使用AD。 AD是微软开发的一种目录服务,用于管理网络上的用户、计算机和其他资源。对于企业而言,使用A
(图片来源网络,侵删) 前言 作为一名LINUX,Ubuntu是我最喜欢的操作系统之一。它的简单易用性和强大的功能使得它成为了很多人的首选。对于刚开始使用Ubuntu的人来说,有些问题可能会让他们感到困惑。其中一个问题就是如何查看自己安装的软件。在这篇文章中,我将为大家详细介绍如何在Ubuntu中查看自己安装的软件。 使用终端命令 在Ubuntu中,我们可以使用终端命令来查看我们安装的软件。打开终
在终端基础知识系列的这一部分中,学习如何在 Linux 中使用命令行复制文件和目录。 复制文件是你经常执行的最基本但最重要的任务之一。 Linux 有一个专门的 cp命令用于复制文件和目录(文件夹)。 在终端基础知识系列的这一部分中,你将学习在终端中复制文件和文件夹。 📋 回想一下,以下是你迄今为止在本终端基础知识系列中所学到的内容: 更改目录 创建新目录 列出目录内容 创建文件 读取文件 删除文
12 月 9 日消息,据外媒 Phoronix 报道,Linux 系统组件 systemd 255 的稳定版已经发布,该更新附带了一项名为“systemd-bsod”的服务,能够在 Linux 上显示全屏错误信息。 据介绍,“systemd-bsod”可在日志级别为“LOG_EMERG”时全屏显示错误信息,同时还会显示一个二维码,以便用户获取启动失败错误的更多信息。 IT之家注:BSOD 全称“B
PyCharm是Python最受欢迎的IDE之一。它是由JetBrains开发的。PyCharm支持许多其他编程语言,如HTML,CSS,Javascript,SQL等。PyCharm的功能可以使用插件进行扩展。内置图形调试器、集成单元测试仪、嵌入式版本控制系统。 在Linux Mint 21 Vanessa上安装PyCharm 第 1 步。在运行下面的教程之前,请务必通过在终端中运行以下命令来确
回到顶部
|