![在 Linux 网络中分发命令/任务的简单解决方案是什么?](https://linux22.com/image/557064/%E5%9C%A8%20Linux%20%E7%BD%91%E7%BB%9C%E4%B8%AD%E5%88%86%E5%8F%91%E5%91%BD%E4%BB%A4%2F%E4%BB%BB%E5%8A%A1%E7%9A%84%E7%AE%80%E5%8D%95%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
可能重复:
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。