Boa noite a todos,
Trago algo bacana que aprendi esses dias.
Algumas vez você deve ter se deparado com algum programa que, após algum tempo de uso, travou sem mais, nem menos. Simplesmente a janela ficou acinzentada e nada era processado. Isso é comum em programas em fase de testes. Recentemente aconteceu comigo quando testava o novo emesene http://emesene.org/.
O que poderia ser feito?
O comando ps, seguido dos parâmetros aux
$ ps aux (Mais detalhes, acesse ao manpage através do comando man ps)
exibe os processos atualmente sendo executados.
Agora, você pode filtrar por um termo que esteja buscando, utilizando um pipe | seguido por um filtro, com o auxílio do grep. No meu caso, emesene, assim:
$ ps aux | grep emesene
Caso o comando encontre o processo em execução, no caso o do programa emesene, então, serão retornadas duas linhas. A primeira com o processo referente ao emesene. A segunda, referente ao comando executado há pouco.
Para que apenas o primeiro seja exibido, você pode ainda utilizar o comando head com o parâmetro -n 1, que quer dizer, exibir apenas as -n primeiras linhas. No caso, apenas 1 linha:
$ ps aux | grep emesene | head -n 1
Agora, utilizando o comando cut, podemos "cortar" a linha retornada em diversas colunas, segundo algum "critério separador". Na verdade, delimitador, identificado pelo parâmetro -d. Vamos utilizar o espaço em branco: -d ' '. Em seguida, é preciso informar que coluna(s) deseja exibir, com o parâmetro -f. Se fornecermos o parâmetro -f 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, o comando irá exibir as colunas 1, 2, ..., 10 do texto retornado. No nosso caso, o número do processo será encontrado na coluna 4. Então, precisamos apenas de -f 4. Veja como fica agora
$ ps aux | grep emesene | head -n 1 | cut -d ' ' -f 4
Esse comando retorna apenas o número do processo referente ao programa emesene.
Poderíamos atribuir a saída deste comando a uma variável:
$ processo=`ps aux | grep emesene | head -n 1 | cut -d ' ' -f 4`
ou
$ processo=$(ps aux | grep emesene | head -n 1 | cut -d ' ' -f 4)
Se você, neste momento, solicitar ao terminal que exiba o conteúdo da variável que acabou de criar, chamada processo, com o comando
$ echo $processo
Então, será exibido o número do processo armazenado por esta variável.
Agora, podemos chamar o comando kill, seguido do processo que desejamos matar.
$ kill $processo
Não sei aí, mas aqui, o emesene "morreu", encerrou, fechou, ou como queira chamar =)
Uma maneira mais rápida, mas não tão eficiente, de encerrar um processo pode ser feito utilizando o comando killall, cuja função é matar um processo, recebendo um nome como parâmetro. Dessa forma, nosso comando ficaria simplesmente assim:
$ killall emesene
Mas por que cargas d'água eu não disse isso antes? É que eu queria mostrar através do exemplo, outros comandos, que podem ser úteis, como o cut, o head, o grep, assim como diversos outros.
É importante se familiarizar com alguns comandos do GNU/Linux, pois eles podem te salvar, em situações em que, por exemplo, você não soubesse que, clicando com o botão direito no painel superior, no GNOME, e em seguida, Adicionar ao Painel, existe um applet (procure algo como force quit ou forçar...), que, quando você clica nele, é possível encerrar algum programa clicando em seguida no programa. Entendeu? Enfim, era isso...
Até a próxima
Nenhum comentário:
Postar um comentário