Discussion:
[shell-script] Script para matar vários processos ao mesmo tempo
'alysoncb .' bambamcbreal@gmail.com [shell-script]
2017-11-22 11:17:54 UTC
Permalink
Fala pessoal, bom dia!
Não sei se vocês já enfrentaram o mesmo problema que eu...

É o seguinte, eu tÃŽ criando um script pra matar vários processos ao mesmo
tempo, mas eu queria fazer isso sem utilizar o OU | do grep.

Na linha de comando ficaria assim:

ps xufa | grep -E *(gedit|sublime_text)* | grep -v grep | awk '{print $2}'
| xargs kill -9

No script tá brabo de fazer isso, pois eu usaria a variável posicional $1.

Exemplo do script:

!#/bin/bash

ps xufa | grep -E $1 $2 $3 $4... | grep -v grep | awk '{print $2}' | xargs
kill -9

E se eu quisesse matar mais de 20 processos ao mesmo tempo?
Como eu faria? Aí que o problema tá!!!

Tá brabo descobrir uma solução pra isso.

Alguém tem uma luz??

Eu já tentei até uma loucura dessas aqui abaixo:
ps xufa | grep -E $1. | grep -v grep | tr '.' ' ' | awk '{print $2}' |
xargs kill -9

Tentei transformar o ponto em espaço, assim eu colocaria os processos
separados por espaço e mataria através do xargs kill -9.
itamarnet@yahoo.com.br [shell-script]
2017-11-22 12:11:50 UTC
Permalink
Alyson

Eu já fiz algo parecido a um tempo, mas não usei grep:


ps xufa | awk '!/awk/ && !/'$(basename $0)'/ && /'$(echo "$@" | tr ' ' '|')'/ { print $2}' | xargs kill -9


Isso ajuda?


[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2017-11-22 12:20:46 UTC
Permalink
Mas Alyson


complementando a resposta anterior considere usar o pkill.


Acho que ele faz justamente o que vc deseja diretamente


[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-11-22 12:23:49 UTC
Permalink
Acho que o mais barato seria fazer:

kill $(ps xufa | grep -E "$@" | grep -v grep | awk '{print $2}')

O $@ contem todos os parâmetros passados. O $* tb, mas dá truta se tiver
espaço em branco (o que é impossível em nome de processo)

Assim como o pipe, tb cria um subshell, mas não carrega o código do xargs

Abraços,
Julio
* Atenção! Últimos treinamentos presenciais do ano! *
Cidade Local Período
Brasilia LinuxSolutions <http://bit.ly/cursoshelljulioneves> 27/11-01/12
São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12
Rio de Janeiro LinuxSolutions <http://bit.ly/cursoshelljulioneves> 11-15/12

*Damos treinamento em sua empresa **com certificado*
*e nota fiscal **por **um preço, **no mínimo, 50% mais*
*barato que qualquer curso.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by 'alysoncb .' ***@gmail.com [shell-script]
Fala pessoal, bom dia!
Não sei se vocês já enfrentaram o mesmo problema que eu...
É o seguinte, eu tÃŽ criando um script pra matar vários processos ao mesmo
tempo, mas eu queria fazer isso sem utilizar o OU | do grep.
ps xufa | grep -E *(gedit|sublime_text)* | grep -v grep | awk '{print
$2}' | xargs kill -9
No script tá brabo de fazer isso, pois eu usaria a variável posicional $1.
!#/bin/bash
ps xufa | grep -E $1 $2 $3 $4... | grep -v grep | awk '{print $2}' | xargs
kill -9
E se eu quisesse matar mais de 20 processos ao mesmo tempo?
Como eu faria? Aí que o problema tá!!!
Tá brabo descobrir uma solução pra isso.
Alguém tem uma luz??
ps xufa | grep -E $1. | grep -v grep | tr '.' ' ' | awk '{print $2}' |
xargs kill -9
Tentei transformar o ponto em espaço, assim eu colocaria os processos
separados por espaço e mataria através do xargs kill -9.
Bambam Souza bambamcbreal@gmail.com [shell-script]
2017-11-22 13:01:50 UTC
Permalink
Show, Itamar e Julio. Deu certíssimo!!!

Agora é só montar o resto do script e tá feito!
Agradecido amigos!!!
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
espaço em branco (o que é impossível em nome de processo)
Assim como o pipe, tb cria um subshell, mas não carrega o código do xargs
Abraços,
Julio
* Atenção! Últimos treinamentos presenciais do ano! *
Cidade Local Período
Brasilia LinuxSolutions <http://bit.ly/cursoshelljulioneves> 27/11-01/12
São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12
Rio de Janeiro LinuxSolutions <http://bit.ly/cursoshelljulioneves> 11-15/12
*Damos treinamento em sua empresa **com certificado*
*e nota fiscal **por **um preço, **no mínimo, 50% mais*
*barato que qualquer curso.*
​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by 'alysoncb .' ***@gmail.com [shell-script]
Fala pessoal, bom dia!
Não sei se vocês já enfrentaram o mesmo problema que eu...
É o seguinte, eu tÃŽ criando um script pra matar vários processos ao mesmo
tempo, mas eu queria fazer isso sem utilizar o OU | do grep.
ps xufa | grep -E *(gedit|sublime_text)* | grep -v grep | awk '{print
$2}' | xargs kill -9
No script tá brabo de fazer isso, pois eu usaria a variável posicional $1.
!#/bin/bash
ps xufa | grep -E $1 $2 $3 $4... | grep -v grep | awk '{print $2}' |
xargs kill -9
E se eu quisesse matar mais de 20 processos ao mesmo tempo?
Como eu faria? Aí que o problema tá!!!
Tá brabo descobrir uma solução pra isso.
Alguém tem uma luz??
ps xufa | grep -E $1. | grep -v grep | tr '.' ' ' | awk '{print $2}' |
xargs kill -9
Tentei transformar o ponto em espaço, assim eu colocaria os processos
separados por espaço e mataria através do xargs kill -9.
Loading...