Qual è il significato delle righe di script bash che iniziano con # $?


13

Ho trovato questo bashscript su GitHub che voglio usare per il mio lavoro. La mia domanda è la seguente: cosa significano le righe da 2 a 5? Sono solo commenti o servono a qualche scopo?

#!/bin/bash
#$ -l h_rt=72:00:00
#$ -V
#$ -N index_calc
#$ -j y

source ~/modules.sh

cd $1

l_file=`find . -name 'L*stack' -type f`
for l in $l_file; do
    echo "Running on file:"
    echo $l
      extract=${l:0:45}
    name=${extract}_index.tif
    echo "Name of index stack:"
    echo $name
    echo "Executing code..."
    ~/Documents/misc/spectral/transforms.py \
    -v $l $name evi ndvi nbr ndmi 

done

echo "Done!"

Risposte:


19

Le righe che iniziano con #$sono opzioni per qsub, un comando utilizzato per inviare un lavoro al cluster SGE, un sistema di pianificazione spiegato in questo file Leggimi :

L'uso dell'ambiente cluster BIMSB (che presto verrà chiamato MAX) è simile all'utilizzo di ambienti unix / linux per l'inoltro del lavoro (ad es. Esecuzione di script o altro software). La differenza è che è necessario specificare preventivamente le risorse necessarie. Il cluster è controllato da un SGE (Sun Grid Engine Software) che organizza le code e le risorse. Questo tipo di sistema di pianificazione è necessario quando molte risorse computazionali sono condivise da molti. Inoltre, sarebbe utile se si eseguono allineamenti per più campioni e si desidera distribuire tali attività (lavori) su più macchine o CPU o quando si eseguono simulazioni statistiche che devono essere eseguite su più CPU per un lungo periodo. Per questi casi e molti altri simili,

SGE eseguirà la "pianificazione dei lavori". Ciò significa che è possibile inviare tutti i lavori e SGE li metterà in coda ed eseguirà quando le risorse richieste saranno disponibili. SGE raggiungerà anche il "bilanciamento del carico" in cui i lavori verranno distribuiti in modo da non sovraccaricare nodi specifici. Inoltre, SGE ti consentirà di fare "monitoraggio e contabilità dei lavori", che sarà utile quando vuoi verificare se il tuo lavoro è in esecuzione e se fallito ti aiuterà a capire cosa è andato storto.

La sintassi del qsubcomando è spiegata nella sua pagina man , lo script usa le seguenti opzioni:

  • -l h_rt=<hh:mm:ss> - specifica il tempo massimo di esecuzione (ore, minuti e secondi)
  • -V - Passa tutte le variabili d'ambiente al lavoro
  • -N <jobname>- specifica il nome del lavoro. Questo lo vedrai quando lo usi qstat, per controllare lo stato dei tuoi lavori.
  • -j y[es]|n[o] - specifica se il flusso di errori standard del lavoro viene unito o meno al flusso di output standard

Come spiega come inoltrare un lavoro usando qsub è possibile impostare le qsubopzioni direttamente nello script nelle righe che iniziano con #$. Questa è un'alternativa al passarli con il qsubcomando sulla riga di comando.

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.