gpt4 book ai didi

linux - Bash:如果工作完成就 catch

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:22 26 4
gpt4 key购买 nike

我有一堆作业应该同时运行。

每项工作都有其后续工作。

Afterjobs 应该一个接一个地运行。

Afterjob 只有在它的工作完成后才能开始。

第一个完成的作业应该立即调用它的 afterjob。

完成的所有其他作业应将它们的后续作业排入队列。

我正在尝试使用任务假脱机程序 (tsp) 将 afterjobs 放入队列中。但是,如果工作完成,我不知道如何捕捉。

#!/bin/bash
# Starting jobs and collecting their pids
job1 & job1_pid=$! &
job2 & job2_pid=$1 &
job3 & job3_pid=$1

# Catching if jobs are finished and put the afterjobs in queue
{wait $job1_pid && tsp afterjob1} &
{wait $job2_pid && tsp afterjob2} &
{wait $job3_pid && tsp afterjob3}

最佳答案

一个简单的方法是在 job 执行后立即链接 afterjob 的队列:

job1 && tsp afterjob1 &
job2 && tsp afterjob2 &
job3 && tsp afterjob3 &

这个只会执行相应作业已成功执行的 afterjobs(向环境返回 0 值)。如果你想让 afterjob 一直执行,你应该使用(感谢 MatthewStory 的建议):

{ job1; tsp afterjob1 } &
{ job2; tsp afterjob2 } &
{ job3; tsp afterjob3 } &

关于linux - Bash:如果工作完成就 catch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com