Como um script pode informar se o Platform LSF está disponível em um ambiente?

2

Temos alguns scripts de shell que atualmente utilizam o Platform LSF para gerenciar a execução de tarefas.

Esses scripts serão eventualmente migrados para um ambiente que usa um agendador de tarefas diferente.

Durante a fase de migração, seria ideal ter o mesmo script suportando o agendamento de tarefas nos dois ambientes, portanto, se detectar que o ambiente LSF está presente, ele usará instruções específicas do LSF, caso contrário, usará os comandos relevantes para o outro meio ambiente.

Pensei em algumas soluções possíveis:

  • Verificar variáveis de ambiente específicas do LSF

    por exemplo. $LSF_BINDIR , $LSF_LIBDIR , $LSF_SERVERDIR

    if [[ -n $LSF_BINDIR ]]; then
      # Yes LSF
    else
      # No LSF
    fi
    
  • Verifique a disponibilidade de comandos específicos do LSF

    por exemplo. which bsub , which bhosts , which bjobs

    if [[ -z $( which bsub 2>&1 | grep "/usr/bin/which" ) ]]; then
      # LSF present
    else
      # LSF absent
    fi
    

Eu não sei se essas verificações são suficientes, ou se existe um método melhor (como em menos hacky) e mais confiável para detectar a presença de Platform LSF em um sistema.

    
por Zaid 11.01.2017 / 09:05

1 resposta

2

Passaram alguns anos desde a última vez que usei o LSF, mas o primeiro comando mencionado no "Guia do Usuário do LSF Batch" (versão 3.2) é lsid , que exibirá o nome do cluster e o nome do o host mestre, assim como a versão do LSF que está instalada.

Acho que a verificação desse comando, bem como de alguns utilitários de usuário comumente usados, como bsub e bjobs , seria uma boa maneira de detectar o LSF. Não tenho conhecimento de nenhum outro software de agendamento que tenha este trio de utilitários (mas não sou especialista).

Para verificar se um comando está no caminho atual, não use which . Use command -v (consulte " Por que não usar" which " ? O que usar então? "):

if (command -v lsid && command -v bsub && command -v bjobs) >/dev/null; then
   echo "LSF seems to be available"
fi
    
por 11.01.2017 / 16:25