从事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
相关推荐
(图片来源网络,侵删) 本文目录导读: 前言 yum和apt的区别 在Ubuntu中安装yum 使用yum在Ubuntu中安装软件 使用apt在Ubuntu中安装软件的优势 为您分享 前言 作为一名Linux用户,我们常常需要安装和更新软件。在CentOS和Fedora等基于RPM包管理系统的Linux发行版中,我们可以使用yum命令来管理软件包。对于使用Debian包管理系统的Ubuntu用户来
FreeOffice 是一款免费且功能齐全的个人和商业办公套件。FreeOffice 与现代 Microsoft 格式 DOCX、XLSX 和 PPTX 以及经典格式 DOC、XLS 和 PPT 以及 LibreOffice OpenDocument 文本 (ODT) 格式完全兼容。它适用于 Linux、macOS 和 Microsoft Windows。 在 Linux Mint 21 Vane
许多小伙伴在使用电脑的时候,经常都会进行电脑系统的更新,特别是Win10系统,可以说非常经常进行一些更新。不少用户在使用电脑更新系统的时候却发现自己的电脑更新时出现错误代码0x800f081f,这要怎么解决呢?下面小编就带着大家一起看看吧! 操作方法: 1、右键点击“此电脑”,选择“管理”。 2、进入到计算机管理后,点击左侧下面的“服务和应用程序”,点选“服务”。 3、找到wi
我们在使用Win 7系统的电脑时,有的时候不希望自己的电脑安装某些特定的软件。尽管自己不主动去下载,但是有的时候由于广告或是其他原因,强制我们下载了这些软件。下面教大家的这个小技巧,就是关于如何设置Win7禁止安装特定软件。 Win7禁止安装特定软件设置流程: 1、使用电脑快捷组合键Win+R打开快速运行,在运行框中输入“gpedit.msc”命令,然后点击回车确定调出本地组策略编辑器
traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 traceroute通过发送小的数据包到目的设备直到
回到顶部
|