有没有办法启动一个 Bash 脚本,然后在第一个脚本完成时排队启动其他 Bash 脚本?
就上下文而言。我正在做图像处理,需要手动摆弄图像,然后将其发送到命令行实用程序以完成。我只有资源运行 1 个实用程序实例(一个巨大的神经网络),但我仍然可以继续搜索和编辑更多图像以便稍后提供给它。我希望能够在完成手动部分后立即将作业放入队列中。
答案1
也许使用 GNU Parallel 来-j1
:
true >jobqueue; tail -n+0 -f jobqueue | parallel -j1
追加工作:
echo my_command my_arg >> jobqueue
有关更多选项(例如,当新文件放入目录时运行)请参阅:https://www.gnu.org/software/parallel/man.html#EXAMPLE:-GNU-Parallel-as-queue-system-batch-manager
答案2
这可能比你想要的要复杂一些,但我会坚持下去。
为什么不建立一个包含您要编辑的要处理的图像的文件夹,然后使用 cron 作业每分钟左右检查该文件夹中的图像,并对该文件夹中的每个项目运行您的完成脚本,然后将完成的图像移至“完成”文件夹?