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.
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.
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
) .
Tags process gridengine