Как использовать flock с несколькими командами под SGE / OGE? - PullRequest
0 голосов
/ 29 января 2019

Я хочу, чтобы скрипт выполнялся на узлах кластера, чтобы настроить их для дальнейших сценариев и, чтобы избежать проблем параллелизма сценариев, использовать flock для их синхронизации.Проблема заключается в том, что скрипт работает как шарм в обычном bash, в то время как он не работает с синтаксической ошибкой в ​​SGE.

Сценарий

#!/bin/bash
LF=/var/lock/sgenodesetup

busy(){
    echo scrip already running - lockfile: $LF
    sleep 60
    exit
}

(
flock -xn 99 || busy
    echo setup command 1
    echo setup command 2
) 99>$LF

И сообщение об ошибке

/var/spool/gridengine/execd/sge1/job_scripts/28: 15: /var/spool/gridengine/execd/sge1/job_scripts/28: Syntax error: word unexpected

Я уже пытался использовать флаг -S для qsub, чтобы гарантировать, что оболочка bash используется для выполнения задания, но ошибка сохраняется при запуске в командной строке, отражая ожидаемые строки.

gridengine-master version6.2u5-7.4

...