我目前在两台机器上有 cron 脚本 运行 来执行任务 - 我可以将它们组合成一个利用两台服务器的脚本吗?
I currently have cron scripts running on two machines to perform a task - can I combine them into a single script that utilises both servers?
我编写了一个需要使用 GPU 的计算机视觉脚本,但我的主要网络服务器没有 GPU(也不可能有)。
因此,我的主要网络服务器是盒子 A,我买了一个单独的服务器,盒子 B,带有 GPU。
工作流程:
1)我站用户上传照片到A框
2) 我处理它们以在盒子 B 上进行对象检测(分批处理,因为对象检测代码的初始启动速度很慢)
3) 然后我将结果存入盒子A.
目前我有 3 个 cron 脚本:
1) 框 A:脚本生成最近未处理的 1000 个文件的文件名列表。
(这 运行 每 5 分钟一次,通常需要一秒钟。)
2) box B:使用rsync,脚本从box A中检索文件名列表,然后检索列表中的所有文件,运行s Yolo对象检测列表图片,并将结果保存到 results.txt
(这 运行 每 5 分钟一次,在脚本 1 之后 1 分钟,通常需要 2 分钟。)
3) 盒子A:另一个脚本连接到盒子B,检索results.txt,并处理它们。图像被标记为已处理,以便下一次脚本 (1) 运行s 它不会再次执行相同的文件。
(这 运行 每 5 分钟一次,比脚本 1 早 1 分钟,通常需要几秒钟。)
我想要什么:
从理论上讲,我觉得我可能 运行 所有这些都来自方框 A 上的一个脚本,这样会更干净、更简单。我担心其中一个脚本被延迟时会发生什么。我可以编写逻辑来添加一些检查(例如 touch script2_completed
),但我认为我应该将所有逻辑合并到一个脚本中,在两个服务器上执行代码。
我的无知:
虽然我以前从未这样做过,但不知道如何最好地去做,以及什么是 possible/isn 不可能的。
例如,如果我在方框 2 上启动 运行ning 远程对象检测脚本,方框 1 上的脚本 运行ning 是否会等到它完成后再继续执行下一个命令,或者它最终会变成异步的,这是不受欢迎的吗?
非常感谢!
事实证明这太简单了。
从本地机器执行远程机器上的脚本,就这么简单
ssh user@serverIP sh /run/this/script.sh
正如@Aaron 在上面的评论中所说,它作为阻塞请求运行,因此您的本地脚本在远程脚本完成之前不会恢复。
我编写了一个需要使用 GPU 的计算机视觉脚本,但我的主要网络服务器没有 GPU(也不可能有)。
因此,我的主要网络服务器是盒子 A,我买了一个单独的服务器,盒子 B,带有 GPU。
工作流程:
1)我站用户上传照片到A框
2) 我处理它们以在盒子 B 上进行对象检测(分批处理,因为对象检测代码的初始启动速度很慢)
3) 然后我将结果存入盒子A.
目前我有 3 个 cron 脚本:
1) 框 A:脚本生成最近未处理的 1000 个文件的文件名列表。
(这 运行 每 5 分钟一次,通常需要一秒钟。)
2) box B:使用rsync,脚本从box A中检索文件名列表,然后检索列表中的所有文件,运行s Yolo对象检测列表图片,并将结果保存到 results.txt
(这 运行 每 5 分钟一次,在脚本 1 之后 1 分钟,通常需要 2 分钟。)
3) 盒子A:另一个脚本连接到盒子B,检索results.txt,并处理它们。图像被标记为已处理,以便下一次脚本 (1) 运行s 它不会再次执行相同的文件。
(这 运行 每 5 分钟一次,比脚本 1 早 1 分钟,通常需要几秒钟。)
我想要什么:
从理论上讲,我觉得我可能 运行 所有这些都来自方框 A 上的一个脚本,这样会更干净、更简单。我担心其中一个脚本被延迟时会发生什么。我可以编写逻辑来添加一些检查(例如 touch script2_completed
),但我认为我应该将所有逻辑合并到一个脚本中,在两个服务器上执行代码。
我的无知:
虽然我以前从未这样做过,但不知道如何最好地去做,以及什么是 possible/isn 不可能的。
例如,如果我在方框 2 上启动 运行ning 远程对象检测脚本,方框 1 上的脚本 运行ning 是否会等到它完成后再继续执行下一个命令,或者它最终会变成异步的,这是不受欢迎的吗?
非常感谢!
事实证明这太简单了。
从本地机器执行远程机器上的脚本,就这么简单
ssh user@serverIP sh /run/this/script.sh
正如@Aaron 在上面的评论中所说,它作为阻塞请求运行,因此您的本地脚本在远程脚本完成之前不会恢复。