|
From: | Robson Alexandre |
Subject: | Re: [shell-script] Re: Estrutura de script para criar fila de espera |
Date: | Fri, 18 Sep 2015 17:16:48 -0300 |
Fernando,
não tinha pensado no wait. Mas como poderia referenciar a ordem da fila para a terceira, quarta, quinta chamadas do script?
Como dito pelo Itamar, preciso do pid das rotinas para ordená-las.
Itamar e Rodrigo, vcs estão completamente certos. Eu teria de gravar o pid da primeira chamada do script p.e. em /var/run/script.pid e consultar se pid atual é igual a pid em script.pid. Acredito q assim, esse arquivo sirva como uma espécie de lock e a informação do primeiro processo executado.
[ ! -f $dir/script.pid ] && {
echo $$ > $dir/script.pid
} || {
ps -p $(cat $dir/script.pid) || {
processos=( $(pgrep $0) )
[ ${#processos[@]} -eq 1 ] && echo $$ > $dir/script.pid || { echo ERRO: Execução da rotina interrompida; exit 1; }
}
}
pid=$(cat $dir/script.pid)
[ $$ -ne $pid ] || {
execRotina
rm /var/run/script.pid
execScriptSeTiverQueue
} && {
addQueue
}
EOF
Obrigado, Itamar.Então se eu estou certo, seria algo do tipo:vOutroPid=$(pgrep "$0" | grep -v "$$");[ -z "$vOutroPid" ] Echo "Executa rotina" || Echo "Add Queue";Com isso, em teoria seria possível a própria rotina saber se há outra instancia dela em execução.Certo?Em 17 de setembro de 2015 14:19, address@hidden [shell-script] <address@hidden> escreveu:Respondendo ao Rodrigo
O script pode saber seu próprio script invocando "$$":As vezes uso a variável no nome de arquivos temporários que um script precise usar.Um comando interessante para saber todos os PID's de um determinado comando é o "pgrep". Acredito que sirva para o propósito que sugere.[]'sItamar
[Prev in Thread] | Current Thread | [Next in Thread] |