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

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

Re: [shell-script] Derrubar Processos


From: José Maria de Oliveira - Depto. Informática
Subject: Re: [shell-script] Derrubar Processos
Date: Thu, 7 Mar 2002 14:03:43 -0300

Obrigado Julio Cezar...

Estarei fazendo alguns testes...

[]s,

  ----- Original Message ----- 
  From: Julio Cezar Neves - DISB.O 
  To: address@hidden 
  Sent: Thursday, March 07, 2002 11:32 AM
  Subject: RES: [shell-script] Derrubar Processos


  Olá José Maria,
  vou te passar a sintaxe e execução sob o SVR4. Ambas costumam variar
  dependendo do sabor uni/linux que vc usa.

  Prompt>ps -u henrique
     PID TTY        TIME COMD
    4199 pts/4      0:00 ksh
    8357 pts/4      0:01 prareg.s

  Para pegar o PID dos processos, eu vou trocar (tr) os blocos de espaços em
  branco por somente um espaço e pegar somente o segundo campo cujo separador
  é branco (cut).
  Prompt>ps -u henrique | tr -s " " " " | cut -f2 -d" "
  PID
  4199
  8357

  Para vc entender o uso do tr -s veja só o exemplo abaixo:

  Prompt>ps -u henrique | tr -s " " ":"
  :PID:TTY:TIME:COMD
  :4199:pts/4:0:00:ksh
  :8357:pts/4:0:01:prareg.s
  Como vc viu ele trocou blocos de espaços por dois-pontos, e o que nos
  interessava era o segundo pedaço.

  Voltando à vaca fria, na execução daquela linha de comando ficamos com uma
  indesejável palavra "PID" encabeçando a relação. Vamos usar o grep com a
  opão -v para capá-la:

  Prompt>ps -u henrique | tr -s " " " " | cut -f2 -d" " | grep -v PID
  4199
  8357

  Agora sim! Agora basta passar estes PIDs dos processos do henrique para o
  cmd kill:

  Prompt>ps -u henrique | tr -s " " " " | cut -f2 -d" " | grep -v PID | xargs
  kill/bin/sh: kill 4199: permission denied
  /bin/sh: kill 8357: permission denied

  Ufa! Ainda bem que eu não estava logado como root, senão o Henrique ia ficar
  uma fera comigo!!! :^).

  A saída da linha acima poderia ser + limpa se vc matasse somente o shell do
  usuário. Como todos os outros processos deste usuário são filhos do seu
  shell, matando o pai os outros, normalmente, morreriam. Eu disse + limpa, pq
  a linha pode matar primeiro o pai e qdo for matar os filhos, por eles não
  existirem mais, dar um erro. Uma marreta para não aparecer o erro seria:

  Prompt>ps -u henrique | tr -s " " " " | cut -f2 -d" " | grep -v PID | xargs
  kill 2> /dev/null

  [ ]s,
  Julio Cezar Neves

  Em tempo: se vc precisar executar esta linha de comandos constantemente,
  "aliase-a" (gostou dessa? Acabei de inventar :º) no seu .profile (ou
  bash_profile) substituindo henrique por $1 e chame-a passando o username do
  usuário que vc deseja premiar.


  -----Mensagem original-----
  De: José Maria de Oliveira - Depto. Informática
  [mailto:address@hidden]
  Enviada em: quinta-feira, 7 de março de 2002 08:15
  Para: address@hidden
  Assunto: [shell-script] Derrubar Processos


  Bom Dia pessoal...

  Alguem poderia me passar como faco para derrubar todos os processos de um
  determinado usuario ????

  Obrigado por enquanto...

  []s,


  [As partes desta mensagem que não continham texto foram removidas]


  Sair da lista: address@hidden
  Banco Dados:   http://www.egroups.com/group/shell-script 

  Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
  http://br.yahoo.com/info/utos.html 


  Sair da lista: address@hidden
  Banco Dados:   http://www.egroups.com/group/shell-script 

  Seu uso do Yahoo! Grupos é sujeito aos Termos do Serviço Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]


From (no email address) Thu Mar 07 09:59:37 2002
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: unknown); 7 Mar 2002 17:59:34 -0000
Received: (qmail 7961 invoked from network); 7 Mar 2002 17:14:16 -0000
Received: from unknown (216.115.97.167)
  by m3.grp.snv.yahoo.com with QMQP; 7 Mar 2002 17:14:16 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156)
  by mta1.grp.snv.yahoo.com with SMTP; 7 Mar 2002 17:14:16 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4])
        by perninha.conectiva.com.br (Postfix) with SMTP id 3E8AD38C8C
        for <address@hidden>; Thu,  7 Mar 2002 14:14:13 -0300 (EST)
Received: (qmail 30268 invoked by uid 0); 7 Mar 2002 17:14:22 -0000
Received: from verde.conectiva (10.0.2.168)
  by burns.conectiva with SMTP; 7 Mar 2002 17:14:22 -0000
Date: Thu, 7 Mar 2002 14:17:04 -0300 (BRT)
X-X-Sender:  <verde@verde.conectiva>
To: <address@hidden>
Subject: Re: [shell-script] Pegar tudo entre ' '
In-Reply-To: <53EFD9E3C76F5D40AB14E9775CDFC9FB0401C80C@wtrjo093>
Message-ID: <Pine.LNX.4.33L.0203071405210.965-100000@verde.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>
X-Yahoo-Group-Post: member; ug194321
X-Yahoo-Profile: verde6666

grande julio,

@ 7/3, Julio Cezar Neves - DISB.O:
> Fala Aurélio, *meu guru de regexp*,
> entendi legal a sua solução fazendo agrupamentos com parênteses para
> posterior substituição por \1 e \2. Pra te falar a verdade, foi a 1a.
> solução que me ocorreu, mas achei que a minha era + simples. Quebrei a cara
> pq não me ocorreu que podia ter mais de uma palavra entre plics. Faltou
> experiencia (malandragem?) em regexp.

não, peraí! deu pau nesse yahoo e eu recebi as mensagens dessa
discussão só um dia depois.

a tua com o .* está MELHOR que a minha com os parênteses. as duas
fazem exatamente a mesma coisa, mas o minha é BLOAT
desnecessariamente... se eu tivesse lido tua resposta antes nem
tinha enviado a minha &:)

a que é melhor que as duas é a mais específica, onde se troca o
.* por [^']*, que daí pode ter mais de um por linha.


> Mudando de assunto, me caiu no colo um big sistema escrito em perl e estou
> estudando a linguagem, que como vc sabe usa regexp abundantemente (oops!).
> Vi uma construção muito interesante, parecida com o caso da lista que
> estamos discutindo, que não entendi legal a solução dada. Abaixo o texto ao
> qual me refiro:

aaaaah, é exatamente nosso assunto. basta trocar as tags <I> por
aspas simples e é a mesma dúvida dessa discussão.

> $_='HTML <I>munging</I> time !.';
>
> /<I>(.*)<\/I>/i;
>
> /<I>(.*?)<\/I>/i;

note que única diferença é que o .* virou .*?
essa interrogação no final faz o asterisco NÃO ser guloso.


um dois três quatro cinco seis
----------------------------x      .*is
-----x                             .*?is


então em vez de ir até onde pode no padrão, a interrogação faz o
asterisco parar já primeira ocorrência que satisfaz a ER.


tem mais detalhes em http://verde666.org/er nos tópicos:

     * 3.2 Quantificadores gulosos
     * 3.3 Quantificadores não-gulosos

&;)


--
http://verde666.org s/click/^a]/;^[:wq



reply via email to

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