Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix LSF父作业正在等待子作业_Unix_Lsf - Fatal编程技术网

Unix LSF父作业正在等待子作业

Unix LSF父作业正在等待子作业,unix,lsf,Unix,Lsf,我正在使用LSF bsub命令在Unix环境中提交作业。但是,LSF作业正在等待子作业完成 下面是一个示例(下面是有关示例脚本的详细信息): 无LSF:如果我在Unix中提交parent.ksh而不使用LSF,即在命令提示符下键入/parent.ksh,parent.kshget已提交并在一秒钟内完成,无需等待子作业script1.ksh和script2.ksh,因为这些作业已在后台模式下提交。这是Unix中的典型行为 使用LSF:但是,如果我使用LSF提交我的parent.ksh,即bsub

我正在使用LSF bsub命令在Unix环境中提交作业。但是,LSF作业正在等待子作业完成

下面是一个示例(下面是有关示例脚本的详细信息):

  • 无LSF:如果我在Unix中提交
    parent.ksh
    而不使用
    LSF
    ,即在命令提示符下键入
    /parent.ksh
    parent.ksh
    get已提交并在一秒钟内完成,无需等待子作业
    script1.ksh
    script2.ksh
    ,因为这些作业已在后台模式下提交。这是Unix中的典型行为
  • 使用LSF:但是,如果我使用
    LSF
    提交我的
    parent.ksh
    ,即
    bsub parent.ksh
    parent.ksh
    在提交后等待180秒(这是第2号孩子(即script2.ksh)所花费的最长时间)。请注意,我已经计算了处于待定状态的作业所花费的时间
  • 这是我没有预料到的,我如何确保这不会发生

    我已经检查过,
    script1.ksh
    script2.ksh
    在这两种情况下都被调用

    parent.ksh:

    #!/bin/ksh<br>
    /abc/def/script1.ksh &<br>
    /abc/def/script1.ksh &<br><br>
    
    #!/bin/ksh<br>
    sleep 80<br><br>
    
    #!/bin/ksh<br>
    sleep 180
    
    #/bin/ksh
    /abc/def/script1.ksh&
    /abc/def/script1.ksh&

    script1.ksh:

    #!/bin/ksh<br>
    /abc/def/script1.ksh &<br>
    /abc/def/script1.ksh &<br><br>
    
    #!/bin/ksh<br>
    sleep 80<br><br>
    
    #!/bin/ksh<br>
    sleep 180
    
    #/bin/ksh
    睡眠80

    script2.ksh:

    #!/bin/ksh<br>
    /abc/def/script1.ksh &<br>
    /abc/def/script1.ksh &<br><br>
    
    #!/bin/ksh<br>
    sleep 80<br><br>
    
    #!/bin/ksh<br>
    sleep 180
    
    #/bin/ksh
    睡180
    我猜原因是LSF跟踪作业的进程树,因此LSF作业只有在这两个后台进程退出后才能完成。因此,您可以尝试在新会话下为后台进程创建一个新进程组。

    您可以尝试bsub parent.ksh&并在此处共享结果吗?尝试bsub parent.ksh后的结果与此相同。我以前没有使用过LSF,但我怀疑LSF会对其创建的进程进行一些后台监视,因此会一直运行到所有进程都运行为止孩子们已经做完了。这很可能是预期的行为,但同样,我可能错了。批处理调度程序的全部目的是阻止用户执行您试图执行的操作。它的LSF的任务是跟踪执行主机上运行的内容,以便它能够准确地管理机器。如果您使用双fork和setsid(),则可能会愚弄LSF。但是,LSFv9.1将提供对cGroup的支持,AFAIK将弥补这一漏洞。