qsub -hold_jid -afterok loop non avviato


2

Sto cercando di eseguire una serie di lavori inoltrati al cluster, uno dopo l'altro, sostituendo il seguente script .sh:

Annotation_Loop.sh:

#!/bin/bash

job=`qsub run_IntersectBed_1.sh 0`
for i in {1..3}
do
    job_next=`qsub -hold_jid $job run_IntersectBed_1.sh $i`
    job=$job_next
done

Il primo lavoro (prima di entrare nel ciclo) viene eseguito, ma i successivi non vengono mai avviati.

Penso che la sceneggiatura sia ben scritta. Cambio la modalità in un eseguibile e la eseguo come

nohup ./Annotation_Loop.sh (Penso che sia necessario?) ... ma il resto non è mai stato fatto.

Ho provato -W prima, usando -W depend=afterok:$jobal posto di-hold_jid $job

#!/bin/bash

    job=`qsub run_IntersectBed_1.sh 0`
    for i in {1..3}
    do
        job_next=`qsub -W depend=afterok:$job run_IntersectBed_1.sh $i`
        job=$job_next
    done

Ma è tornato unknown option -W.

Cosa potrebbe andare storto? :(

Risposte:


1

L'output di qsub ha il jobid all'interno di un messaggio di testo. Nel mio caso:

$ qsub hello.sh
Your job 8845476 ("hello.sh") has been submitted

È necessario estrarre il jobid da questo messaggio. Per esempio:

$ jobid=$(qsub hello.sh | cut -d' ' -f3)
$ echo $jobid
8845481

Forse la tua versione di qsub, ha un messaggio diverso, provalo separatamente e poi taglia un taglio per ottenere il jobid come stringa.


0

Per chiunque si imbatta in questi anni dopo:

Userei un lavoro di array per questo per evitare di scrivere uno script di shell. Hai bisogno di qualcosa di simile run_IntersectBed_1.sh $SGE_TASK_IDe devi inviartiqsub -t 1-3 -tc 1 Annotation_Loop.sh

Questo crea una matrice di 3 lavori, numerati 1, 2 e 3, che vengono eseguiti uno alla volta ( -tc 1). Non devi più preoccuparti hold_jid.

SGE_TASK_IDè dove si trova l'ID intero del lavoro corrente. Questo è ciò che passi al tuo codice (equivalente di inel tuo ciclo).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.