我遇到了一个问题,因为我必须使用不同的数据执行相同的程序近 1700 次。该程序使用迭代进行多次计算,大约 5 小时后获得答案。问题是今天早上我创建了一个 bash 脚本,它在不同的目录中移动并使用 执行程序nohup ./name_of_the-program >1&
,但是当我运行它时,我的服务器因这些命令而崩溃,我必须手动重新启动它(我认为它们是当其他人完成时执行)。我怎样才能运行它?我可以使用 3 个不同的 Linux 服务器,其中我可以同时运行 16、16 和 20 个。先感谢您。
答案1
GNU Parallel 就是为这种事情而构建的。
在一台服务器上启动tmux
:
tmux
确保您可以ssh
连接到 server1、server2 和 server3。
然后运行:
cat 1700_arguments |
parallel --dry-run --joblog my.log -S server1,server2,server3 name_of_the-program
当要运行的命令看起来正确时,删除--dry-run
.
然后断开与服务器的连接(用于tmux at
重新连接)。
有了它,--joblog
您将能够恢复或重新运行失败的作业。
要到达正确的目录,您可能需要使用--wd .
.