【问题标题】:cronjob wait understandingcronjob 等待理解
【发布时间】:2012-10-16 10:47:54
【问题描述】:

下面是我想要的 cronjob 脚本

等待 3rd_job 完成以开始 4th,5th

并等待 2nd_job 完成以开始 6、7、8 作业。

如何实现这一点提前谢谢

目前开始 4,5th 工作它正在等待 1,2,3th 工作的完成,但我只想等待 3rd 开始 4,5th 并仅等待 2nd 完成以声明 6,7,8th

    #!/bin/bash
    cd /home/ubuntu/
    PATH=$PATH:/usr/local/bin
    export PATH
    nohup scrapy crawl 1st_job &
    nohup scrapy crawl 2nd_job &
    nohup scrapy crawl 3rd_job &
    wait $(pgrep 3rd_job)
    nohup scrapy crawl 4th_job &
    nohup scrapy crawl 5th_job &
    wait $(pgrep 2nd_job)
    nohup scrapy crawl 6th_job &
    nohup scrapy crawl 7th_job &
    nohup scrapy crawl 8th_job &

【问题讨论】:

  • ....然后你的问题是什么?
  • 我怎样才能实现“我想要的”
  • 您必须告诉我们更多信息。到目前为止,我没有看到您尝试使用的 cron 选项卡......或者这个问题不是关于 cron 的,而是更多关于在 shell 中正确使用作业控制的问题?

标签: linux bash shell cron


【解决方案1】:

您可以使用包含最后生成的异步任务的 PID 的 $! 变量:

#!/bin/bash
cd /home/ubuntu/
PATH=$PATH:/usr/local/bin
export PATH
nohup scrapy crawl 1st_job &
nohup scrapy crawl 2nd_job &
pid_2nd="$!"
nohup scrapy crawl 3rd_job &
wait $!
nohup scrapy crawl 4th_job &
nohup scrapy crawl 5th_job &
wait $pid_2nd
nohup scrapy crawl 6th_job &
nohup scrapy crawl 7th_job &
nohup scrapy crawl 8th_job &

如果您想要一些更复杂的东西,例如以有向无环图方式执行(例如,一旦第 3 次完成开始 4-5 并且一旦第 2 次完成开始 6-8)我建议您将调用重新组织为函数,以便它们可以被异步调用:

#!/bin/bash
second () {
    nohup scrapy crawl 2nd_job
    nohup scrapy crawl 6th_job &
    nohup scrapy crawl 7th_job &
    nohup scrapy crawl 8th_job &
}

third () {
    nohup scrapy crawl 3rd_job
    nohup scrapy crawl 4th_job &
    nohup scrapy crawl 5th_job &
}

cd /home/ubuntu/
PATH=$PATH:/usr/local/bin
export PATH
nohup scrapy crawl 1st_job &
third &
second &

希望这会有所帮助 =)

【讨论】:

  • 感谢您的回答,希望对您有所帮助,谢谢
  • 你能解释一下 after3rd & after2nd & 吗?这些是一些 linux 命令吗?
  • 抱歉,我更改了函数名称,但忘记更改它们的调用位置。它们只是为了异步执行函数。
  • 你的意思是在最后不添加“&”它会阻止下一个命令直到它自己执行,所以对于一个菜鸟问题,但我不熟悉 linux 和命令
  • 没错。因此,当 second 函数异步执行时,它只会在第 2 个作业完成后(异步)生成第 6 个、第 7 个和第 8 个作业。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多