【问题标题】:How to tell when a background job is 'done'如何判断后台工作何时“完成”
【发布时间】:2020-12-04 09:13:43
【问题描述】:

假设我运行以下命令:

$ find /mnt/folder1 > file2.csv & find /mnt/folder2 > file2.csv &

有没有办法在这些工作完成时发出信号?还是我需要轮询$ jobs$ ps aux 之类的东西才能推断它们何时完成?建议的处理方法是什么?

【问题讨论】:

  • 作业完成后通常会打印到终端。
  • 你可以运行wait...如果你是这个意思。
  • @MarkSetchell 你能举个例子说明它是如何运行的吗?
  • 您只需在后台启动一堆并行作业,然后运行wait,直到它们全部完成后您才会收到提示。如果您想要更复杂的东西,只需说出您的需要。

标签: bash unix parallel-processing background-process


【解决方案1】:

Mark Setchell 的评论详细说明:

$ find /mnt/folder1 > file2.csv &
$ find /mnt/folder2 > file2.csv &
$ wait

【讨论】:

    【解决方案2】:

    除非你有一个健壮的实体,否则很难捕捉你的命令。在您的情况下,您可以找到进程的 PID,例如:

    pgrep find
    12542
    

    它将找到当前find作业的所有进程ID。如果没有,您可以假设工作已完成。

    【讨论】:

    • 你可能最好运行作业 - 与 pgrep 相反,以确保没有从其他父进程产生的 find 子进程。
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2018-03-01
    相关资源
    最近更新 更多