Machma - 允许运行Linux中并行的多个命令

时间:2020-03-05 15:28:53  来源:igfitidea点击:

为了充分利用计算能力,可以并行运行作业。
例如,镜像的重新尺寸顺序地需要大量的时间,另一方面并行地重新调整多个镜像,可以更好地使用多核CPU,因此更快。
Machma使得并行执行任务非常容易,并提供实时反馈。
在程序打印的错误或者线路的情况下,邮件被标记为作业名称。

早期的文章我们已经看到了如何使用PDSH工具在不同主机中执行并行的命令。

本文介绍了Machma的安装工具,便于并行执行Ubuntu 16.10中的实时反馈的命令

安装

Machma需要Go Lang,在终端中使用以下命令安装它

# wget https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz
 # tar -zxvf  go1.7.1.linux-amd64.tar.gz -C /usr/local/
 # mkdir work
 # vi .profile
 export GOPATH=~/work
 export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
 # go version
 go version go1.7.1 linux/amd64

接下来安装它使用"go get,y""我们还需要Git从Github获取Machma。

# apt-get install git
 # go get github.com/fd0/machma
 # machma --help

MACKMA的用法

Machma默认读取换行符分隔值并将所有命令行参数替换为文件名设置为{}。
作业的数量被设置为运行的CPU的核心数。

假设我们想要ping大量主机。
在文本文件中写出要Ping的所有IP /域,并将滤波输出传递给Machma。
-p选项指定程序数。
如果我们有4个核心,请将"-p""选项的值指定为4.

# cat /tmp/ip_address.txt | machma -p 2 -- ping -c 2 -q {}

一个稍微提前的例子是以下,这是相同的事情,但减少了由ping打印的输出。

# cat /tmp/ip_address | machma -- sh -c 'ping -c 2 -q 
# find . -iname '*.jpg' | machma --  mogrify -resize 1200x1200 -filter Lanczos {}
> /dev/null && echo alive' {}

最多重新大小为当前目录的所有镜像递归到1200x1200像素。
MoGrify命令是我们预先执行的ImageMagic的一部分,以执行以下命令。
我们可以使用apt-get安装imagemagic安装ImageMagic。

# find . -iname '*.jpg' | machma --timeout 5s --  mogrify -resize 1200x1200 -filter Lanczos {}

我们可以限制允许时间允许使用- timeout运行时运行的时间,当到达时,程序被取消。

# find . -iname '*.jpg' -print0 | machma --null --  mogrify -resize 1200x1200 -filter Lanczos {}

如果文件名具有空格,请使用--null选项,指示Machma从STDIN中读取由空字节分隔的项目。

##代码##