2016-05-13 4 views

Antwort

2
lsfError="**ERROR: Local jobs disabled. Please run through LSF only --" 
lsfExit=2 
lsfLog="$(getent passwd $(id -un) | cut -d: -f6)/.lsbatch/.lsf_${LSB_JOBID}.log" 
echo "**INFO: Verifying as LSF job ..." 
sleep 2s 
if [ -z "$LSB_JOBID" ]; then 
    echo "$lsfError"; exit $lsfExit 
elif [[ "$(bjobs $LSB_JOBID 2>&1)" =~ "not found" ]]; then 
    echo "**ERROR: Job $LSB_JOBID doesn't exist" > $lsfLog 
    echo "$lsfError"; exit $lsfExit 
elif [[ "$(bjobs -o 'command' -noheader $LSB_JOBID 2>&1)" != "$0" ]]; then 
    echo "**ERROR: Command not matched $(bjobs -o "command" -noheader $LSB_JOBID 2>&1) != $0" > $lsfLog 
    echo "$lsfError"; exit $lsfExit 
fi 
0

LSF werden einige Umgebungsvariablen im Arbeitsumfeld, wie $LSB_JOBID eingestellt. Sie könnten das Skript schreiben, um zu prüfen, ob diese Umgebungsvariable definiert ist. Wenn nicht, erkläre, dass das Skript nur als LSF-Job ausgeführt und dann beendet werden soll.

+0

ich in der Lage könnte zu bekommen Job-ID. Was sind andere Umgebungsvariablen, die LSF setzen wird? Gibt es eine Dokumentation dieser Variablen? –

+0

Sie finden die vollständige Liste [hier] (https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.3/lsf_config_ref/lsf_envars_job_exec. dita? lang = de) –

+0

Aber immer noch Benutzer kann diese Variablen auf seinem Terminal und Skript ausführen, ohne als bjob ​​starten. Script konnte nicht feststellen, ob diese Variablen aus LSF stammen oder von Terminal –

0

Ich denke, man könnte erwarten, dass ein LSF Job von res gestartet wird, so können Sie überprüfen, ob es einen ist res Prozess in der gleichen Prozessgruppe, so etwas wie

_pgid=`ps -o pgid --no-headers -p $$` 
ps -o comm,pgid --no-headers | grep -qE '^res\s+'${_pgid// /}'$' || { echo "Must submit as LSF job!"; exit 1; } 
+0

übernommen wurden. Ich habe -u $ (id -un) zum Befehl ps hinzugefügt. Es verließ, wenn nicht lsf. Aber wenn es Res-Prozess für jeden bjob ​​gibt, wie können wir identifizieren, welche res zu welchem ​​bjob ​​gehört –

+0

Ich denke, dass Sie die Prozessgruppe des Jobs verwenden könnten, um die res-Instanz zu identifizieren, die zu diesem bestimmten Job gehört; Bitte beachten Sie die Änderung. – mustaccio

Verwandte Themen