在 Linux 网络中分发命令/任务的简单解决方案是什么?

在 Linux 网络中分发命令/任务的简单解决方案是什么?

可能重复:
Linux - 同时在多台机器上运行相同的命令

情况如下:

  • 我们有一个由十五台四核机器组成的实验室,每台机器都运行 Ubuntu Linux。
  • 我需要运行一个视频编码软件,但是一项作业(即一个具有一种配置的视频)需要很长时间(几个小时)。
  • 配置数量大约与机器数量一样多(约 15 种),视频数量大约为 20 个。

因此,我考虑通过集中存储来访问视频,但让每台机器运行编码过程。

最基本的形式是,使用的命令是这样的

./encode -d default.conf -f local.conf -i inputFile.yuv

现在的问题是:是否有任何软件可以帮助我轻松地在实验室机器上部署这些任务?我在想:

  • 拥有一个调度作业的主机,例如“告诉机器 1 运行/home/user/encode -i input1.yuv,然后/home/user/encode -i input2.yuv,等等”
  • 能够查看哪个节点当前正在执行哪个任务以及执行了多长时间
  • 能够停止任务或在失败时重试

我不仅限于 CLI,还可以是 GUI 应用程序。有什么想法吗?

答案1

考虑安装 TORQUE。它的调度程序不是最好的,但对于这种用途来说已经足够了。如果您以后需要额外的功能,可以用 Maui 替换调度程序。

您的列表中 TORQUE 缺少的唯一功能是失败时自动重试作业。但您应该能够在 TORQUE 服务器上自己编写脚本,方法是检查其 qstat命令的输出以了解哪些作业正在运行,并检查输出文件夹的内容以了解哪些作业已完成。

答案2

如果您需要具有更多选项和功能的更大解决方案,请考虑 Sun Grid Engine (SGE),现在称为 Oracle Grid Engine。

http://en.wikipedia.org/wiki/Oracle_Grid_Engine

相关内容