LSF bsub ждет с переменной

У меня есть проблема, чтобы сказать, что job1 должен динамически ждать job2 с именем переменной в LSF, вот мой код

#!/bin/bash

JOB1=first
JOB2=second

bsub -I -q reg -J $JOB1 "ls /bin*" &
bsub -I -q reg -w 'done("$JOB1")' -J $JOB2 ls /usr/ &"

1 ответ

Пара догадок.

  1. bash не будет раскрывать переменную внутри одинарных кавычек. Вы, вероятно, имели в виду это

    bsub -I -q reg -w "done($JOB1)" -J $JOB2 "ls /usr/ &"
    
  2. LSF может не знать о первой работе, когда подана вторая работа. Поскольку первый bsub запускается в фоновом режиме, оба bsub "гоняют" друг друга. Возможно, что второй bsub общается с mbatchd до первого. strace показывает, что это возможно.

    [pid  8413] 18:48:30.533859 execve(".../bsub", ["bsub", "-I", "-J", "first", "ls /bin/*"], [/* 45 vars */] <unfinished ...>
    [pid  8414] 18:48:30.534415 execve(".../bsub", ["bsub", "-I", "-w", "done(first)", "-J", "second", "ls /usr/ &"], [/* 45 vars */] <unfinished ...>
    ...
    [pid  8414] 18:48:30.572521 connect(5, {sa_family=AF_INET, sin_port=htons(6881), sin_addr=inet_addr("a.b.c.d")}, 16 <unfinished ...>
    [pid  8413] 18:48:30.573422 connect(5, {sa_family=AF_INET, sin_port=htons(6881), sin_addr=inet_addr("a.b.c.d")}, 16 <unfinished ...>
    
Другие вопросы по тегам