Como posso verificar se um trabalho está em execução no cluster usando o nome do trabalho (CentOS)

1

Estou executando um script bash para enviar vários trabalhos. A apresentação de um trabalho só acontece se esse trabalho já não estiver em execução. Eu quero usar uma declaração if dentro do meu script bash para simplesmente verificar se "job123" já está em execução ou na fila.

Eu tentei diferentes opções com qstat e qstatus, mas não consigo verificar pelo nome do trabalho. Como esta informação pode ser recuperada? Também essas saídas são apenas strings, eu também não tive sorte usando o grep, mas acho que deve haver um comando específico.

    
por Herman Toothrot 01.08.2016 / 17:00

2 respostas

1

Eu consegui resolver com

qstat -r | grep -cw "jobname"

que dá um 0 ou 1, então eu posso usar dentro de uma instrução if. Parece-me mais um hack do que qualquer coisa. O -r é importante porque exibe nomes completos dos trabalhos.

    
por 01.08.2016 / 17:58
1

O utilitário qstat do Sun / Oracle Grid Engine só permite filtrar seus trabalhos por usuário e ID do trabalho. Se você precisar filtrar por nome de trabalho, você terá que grep :

qstat -u $USER | grep -w jobname

Para uso em uma if -statement:

if qstat -u $USER | grep -q -w "$jobname"; then
  # job is in the queue
else
  # job is not in the queue
fi

Após uma breve pesquisa na Web, descobri também que algumas versões de qstat aparece para poder filtrar pelo nome do trabalho usando a opção -j :

qstat -u $USER -j "$jobname"

Não consegui verificar se isso funciona ou não. Outras versões deste utilitário claramente não podem fazer isso (e nem mesmo suportam -u ) .

    
por 01.08.2016 / 18:36