shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RES: RES: [shell-script] Como saber se meu shell já está executando?


From: Alain
Subject: Re: RES: RES: [shell-script] Como saber se meu shell já está executando?
Date: Tue, 15 Mar 2005 14:30:15 -0300
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

O prep é um comando externo, não depende do shell!
Verifique com o "man pgrep" se ele existe...

Alain

Rodolfo Villanova escreveu:
Ok, Alain.

Obrigado pelo aprimoramento sugerido.

Esqueci de destacar que a solução que apresentei serve para interpretadores
Korn-Shell (/bin/ksh) e Bourne-Shell (/bin/sh), embora também funcione no
bash. Meu intuito foi o de apresentar uma solução portável.

No caso que apresentaste, me parece que serve somente para interpretador
Bourne-Again Shell (/bin/bash).

Infelizmente não tenho autorização para compilar e instalar o bash nos
servidores com que trabalho.

Reproduzirei novamente o que havia sublinhado na mensagem anterior:


Há maneiras diferentes e até mais enxutas de realizar o proposto.


Grato,
--------------------------
Rodolfo D. Gross Villanova


-----Mensagem original-----
De: Alain [mailto:address@hidden]
Enviada em: terça-feira, 15 de março de 2005 12:46
Para: address@hidden
Assunto: Re: RES: [shell-script] Como saber se meu shell já está
executando?

O comando apropriado para testar se um processo está em execução é
*pgrep* conforme aprendi aqui na lista. Substitue toda aquela sequencia
de ps|grep|grep|etc. O camndo simplesmente foi feito para isso :)

Alain

Rodolfo Villanova escreveu:

Melhorando um pouco o teste no script:

#!/bin/ksh
DATA=`date +%d/%m/%Y`
HORA=`date +%H:%M:%S`
if [ `ps -ef | grep -v grep | grep \`basename $0\` | wc -l` -gt

1 ]; then

   echo "[${DATA} ${HORA}] *** Existe outro processo

<`basename $0`> sendo

executado nesse momento ***"
   exit
else
   echo "[${DATA} ${HORA}] *** Só há uma instância do processo

<`basename

$0`> sendo executado nesse momento ***"
   echo
   echo "Segue executando as tarefas restantes do script ..."
   echo
fi

Há maneiras diferentes e até mais enxutas de realizar o proposto.
Essa é a forma que encontrei para mostrar como atingir o objetivo.


1 abraço,
-----------------
Rodolfo Villanova




-----Mensagem original-----
De: Rodolfo Villanova
[mailto:address@hidden]
Enviada em: terça-feira, 15 de março de 2005 10:15
Para: address@hidden
Assunto: RES: [shell-script] Como saber se meu shell já está executando?

People,

Creio que o que o nosso amigo Barioni deseja é evitar que haja

mais de uma

instância do mesmo script rodando ao mesmo tempo.
Presumo isso em razão de que a maioria de meus scripts fazem

esse tipo de

teste.

Veja se isso serve:

if [ `ps -ef | grep -v grep | grep "$nome_script"` ]; then
  echo "$0 já está no ar. Tchau..."
  exit
else
  echo "Dispara o bicho"
  . $nome_script
fi

Abraço,
--------------------------
Rodolfo D. Gross Villanova



-----Mensagem original-----
De: Andreyev Dias de Melo [mailto:address@hidden]
Enviada em: segunda-feira, 14 de março de 2005 14:19
Para: address@hidden
Assunto: Re: [shell-script] Como saber se meu shell já está executando?



On Mon, 07 Mar 2005 22:23:23 -0000, rcbarioni
<address@hidden> wrote:


Em um shell qualquer, como fazer o IF abaixo com segurança?

  if [ ... TESTAR SE O SHELL $0 JÁ ESTÁ RODANDO ... ]

  then

       echo "O shell $0 já está rodando. Caindo fora."

  else

       echo "ok, vamos executar as instruções."

       instruções... instruções...

  fi

Em bash você pode pegar o código de status do último comando na
variável $?:

$ ping -c 1 -t 1 -q localhost > /dev/null
$ echo $?
0

Ou seja, se voltou 0 (zero) geralmente não deu nenhum erro. Porém,
alguns programas não seguem esta regra.

Se o script for seu, é bem interessante colocar um 'controle' de
erros, onde vc 'cadastra' os erros mais comuns/importantes...
[]s
--
Andreyev




---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de
programação, como perl, C etc. Quem insistir em não seguir esta
regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em

http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos











---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de

programação, como perl, C etc. Quem insistir em não seguir esta
regra será moderado sem prévio aviso.

---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em

http://www.listas-discussao.cjb.net

---------------------------------------------------------------------

Links do Yahoo! Grupos













---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos











---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Links do Yahoo! Grupos










reply via email to

[Prev in Thread] Current Thread [Next in Thread]