Generalizando o arquivo de tarefa qsub do Mecanismo de Grade para vários programas e nomes de arquivos de entrada

1

Estou usando o Grid Engine em um cluster Linux. Estou executando muitos trabalhos com diferentes programas e diferentes arquivos de entrada. Eu não quero criar vários scripts de tarefas específicas para cada par de programa e arquivo de entrada. Em vez disso, quero poder especificar o nome do programa e o arquivo de entrada na linha qsub .

Portanto, posso usar qsub job.sh <programNameAndLocation> <inputFileName>

Em que job.sh recebe dois argumentos. Isso funciona bem. Mas há outra reviravolta: meus programas estão localizados em um diretório muito longo, que eu não quero digitar toda vez que eu enviar um trabalho - então os pseudônimos são uma escolha óbvia.

Então, quero fazer algo como qsub job.sh <programNameAndLocationAlias> <inputFileName>

Inicialmente, configurei o alias em .bashrc , mas recebi o erro: <programNameAndLocationAlias>: command not found

Por isso, defino o alias em submit.sh . Mas estou recebendo o mesmo erro.

Pensamentos sobre como posso obter o comando qsub job.sh $1 $2 para aceitar aliases também?

    
por cyuut 19.01.2017 / 20:11

1 resposta

0

Um hash e uma função de pesquisa podem ser parecidos com

#!/usr/bin/env bash

declare -A proggies

# "aliases" and then the path said should expand to
proggies[foo]=/some/big/long/stupid/path/foo
proggies[bar]=/some/big/long/stupid/path/bar

function qrunner {
    local exe
    exe=${proggies[$1]}
    if [[ -z "$exe" ]]; then
        echo >&2 "no mapping for '$1'"
        return 1
    fi
    # echo here is for debugging, remove when ready to
    # really break things
    echo qsub job.sh "$exe" "$2"
}

# positive test
qrunner bar filename
echo $?

# and also a negative one
qrunner nope filename
echo $?
    
por 22.01.2017 / 18:04