Thak você, cas. Sua ideia de US $ 12 me ajudou a obter essa nova versão.
Consegui reduzi-lo ao seguinte:
#!/bin/bash
qstat -n -u my12name|grep -v '[ ]---\|[ ]+\|Username\|Elap'|paste - -|sed 's/\/.*//g'|grep -v ' Q ' >> ~/.qstat_history
cat ~/.qstat_history|awk '!NF ||!seen[$1]++'|sed '/^\s*$/d' > qstat_history.tmp
mv qstat_history.tmp ~/.qstat_history
Está excluindo as linhas iniciais (Nome de usuário, Elap, ---) e as linhas que começam com um sinal de mais, depois coloca a linha do nó atrás da linha de trabalho ( paste - -
), exclui o material do nó por trás da linha barra ( s/\/.*//g
) e greps todo trabalho que está executando resp. não grep jobs que estão aguardando ( |grep -v ' Q '
). O que sobrou será adicionado ao meu arquivo .qstat_history.
A próxima é excluir linhas duplicadas com o awk, salvá-lo no arquivo temporário e mover o arquivo temporário para o novo .qstat_history.
Foi-me mostrado uma função do qstat que é muito oculto ( -1
), que coloca a linha do nó diretamente atrás da linha de trabalho. Isso facilita um pouco mais para dar a seguinte versão:
#!/bin/bash qstat -u my12name -n -1|sed 's/\/.*//g'|grep ' R ' >> ~/.qstat_history cat ~/.qstat_history|awk '!NF ||!seen[$1]++' > qstat_history.tmp mv qstat_history.tmp ~/.qstat_history