O aplicativo parou de responder? Use xkill para matar.

Relacionado ao comando kill, o xkill é usado no ambiente gráfico para matar janelas ou aplicativos que não estejam mais respondendo.
Pelos mesmos motivos expostos aqui, não deve ser usado o tempo todo. Você pode perder informações e tornar a sua sessão instável, ao abusar do uso deste método para terminar programas.

POSTS RELACIONADOS

Como fechar programas no ambiente gráfico do Linux

Quando um programa para de responder, no ambiente gráfico, você ainda tem opções para evitar a perda dos dados que estavam sob o trato do aplicativo.
Se o mouse ainda não parou de responder, tente fechar o aplicativo pelo próprio menu do sistema:

  • clique com o botão direito do mouse sobre a aba referente à janela do programa (na barra de tarefas);
  • selecione a opção Fechar F4;
  • confirme que você deseja terminar o programa
  • Aviso do sistema para fechar programa que parou de responder
    Clique para ampliar.

Só para constar: este é o jeito certo de fechar aplicativos que pararam de responder. Aguarde, pacientemente, enquanto o sistema fecha a janela do aplicativo.
Se isto não deu certo, use o xkill

Como usar o xkill para fechar aplicativos

Desenvolvido por Jim Fulton e pela programadora Dana Chee, o xkill, permite fechar arbitrariamente a conexão de um programa com o servidor X.
Se o xkill não for encontrado no menu do sistema, você pode iniciá-lo a partir de um terminal:

xkill

ao iniciar, o xkill transforma o cursor do mouse em uma “caveirinha“. Ao clicar dentro de qualquer janela, a caveirinha vai “tentar matar” o aplicativo que estiver rodando ali.
Se você se arrepender, aperte a tecla ESC no seu teclado para cancelar o “assassinato”.

Usar o xkill é recomendável?

Não. Não é.
Use-o apenas como último recurso.
Entre os resultados indesejados, você pode tornar o seu sistema instável e perder os dados que estavam dentro do aplicativo fechado.
Além disto, o xkill não garante o fechamento do aplicativo — a única coisa que ele se propõe é fechar sua conexão com o gerenciador gráfico de janelas.
Embora a maioria dos aplicativos costume abortar quando a sua conexão com o X é fechada, alguns podem optar por continuar rodando, em background.

LEITURA SUGERIDA

Como matar programas no Linux

Da série de comandos tradicionais do universo Linux e Unix, o comando kill permite interromper processos arbitrariamente.
Uma definição simplificada de processo é de que se trata de um programa ou uma tarefa em execução
É um sistema UNIX! Eu conheço isto! Kill
Ao iniciar, cada processo recebe uma identificação numérica única, atribuída pelo sistema — chama-se PID, Process IDentification.
Para “matar” um programa em execução, você precisa saber o PID dele (no final do artigo, vou mostrar como matar um processo sem saber seu PID).

POSTS RELACIONADOS

A sintaxe do comando kill

Apesar do nome, o comando kill serve para muito mais do que apenas matar processos.
Sua função é enviar sinais para processos e alguns destes não tem absolutamente qualquer coisa a ver com “morte”.
Sua execução segue, portanto, a seguinte forma:


kill -s SINAL PID

Nos exemplos, abaixo, vou mostrar outras formas de usar o comando.

Como encontrar o PID de um processo específico

O comando ps aux pode mostrar uma lista bem extensa de processos em execução, o que pode dificultar a busca.
É aqui que entra o comando grep, um velho conhecido da gente.
Para exemplificar, vou rodar o ftp em background (&) e determinar o seu PID com o grep em conjunto com o ps:


ftp &

[1] 2983

ps aux | grep ftp

proftpd   1242  0.0  0.1  11996  2172 ?        Ss   10:01   0:00 proftpd: (accepting connections)              
1000      2983  0.0  0.0   5212  1012 pts/5    T    11:51   0:00 ftp
1000      2985  0.0  0.0   4724   836 pts/5    S+   11:51   0:00 grep --color=auto ftp
[1]+  Parado                  ftp

Neste exemplo, o programa ftp tem o PID 2983. No seu sistema o PID será diferente. Verifique.

O comando kill, em exemplos

Uma vez que você já sabe como determinar o PID dos processos, já pode entender como usar esta informação em conjunto com o kill.
Há dois sinais básicos para indicar que se deseja interromper a execução de um processo:

  • SIGTERM(15) — que requisita educadamente a interrupção de um processo. Cabe a este aceitar ou ignorar o sinal. Se aceitar, ele finaliza sua própria execução, graciosamente e gravando o que precisa ser gravado. Há um sinal semelhante a ele, chamado SIGINT. Cada sinal atende por um número. O do SIGTERM é 15.
  • SIGKILL(9) — envia uma requisição ao processo para que este seja terminado imediatamente. Ele não pode ser ignorado e é sequer analisado pelo processo, que é interrompido incontinenti. O número deste sinal é 9.

Vamos ver como aplicá-los:
Podemos enviar um SIGTERM ao processo 2983, de 4 formas diferentes:


kill 2983
kill -s TERM 2983
kill -TERM 2983

ou indicando o número do sinal:


kill -15 2983

Para enviar um SIGKILL, use uma destas 3 opções:


kill -9 2983
kill -s KILL 2983
kill -KILL 2983

Espero ter deixado claro, como terminar um processo via terminal, no Linux. O ambiente gráfico tem um comando similar, chamado xkill, do qual falaremos em outro artigo.

POSTS RELACIONADOS

Como finalizar um programa sem conhecer o seu PID

Há casos em que um processo abre vários outros processos – em que um programa abre várias outras instâncias de si mesmo. Quando o usuário dá um ps no sistema, vê uma quantidade muito grande de PIDs para fechar.
Veja a figura, abaixo, onde se pode ver uma certa quantidade de processos do chromium-browser abertos.
comando ps aux linux
É possível fechá-los todos com o killall. Veja como:


killall chromium-browser

Você pode repassar o número de um sinal para o comando, assim:


killall -9 chromium-browser

Fácil, não é?

Vale a pena encerrar um aplicativo Android com task killers? Entenda por que não.

android-logo
Sempre que o assunto é gerenciamento de memória no Android este tema vem à tona.
Task killers são programas que servem para fechar arbitrariamente outros programas. Quem usa Linux talvez conheça o xKill, que serve para fechar qualquer aplicativo, desde que ele tenha alguma janela em exibição na tela.

POSTS RELACIONADOS

Embora seja útil para desenvolvedores ou profissionais que estejam fazendo testes, entre outros, para o usuário normal fazer uso de um task killer (assassino de tarefas, em português) pode ajudar a bagunçar o seu sistema em vez de torná-lo mais leve e rápido, como te prometeram.

O que é RAM

RAM (Random Access Memory ou memória de acesso aleatório, em português) é uma área, no seu aparelho, para armazenar os seus dados, enquanto ele estiver ligado. Cada sistema operacional faz um uso da RAM do dispositivo em que se encontra instalado.
Como o seu dispositivo não tem HD (disco rígido), ele vai usar a RAM para as mesmas atividades, manter aplicativos e dados em local mais acessível para o processador, uma vez que este tipo de memória tem um tempo de acesso muito melhor do que o cartão SD. É aonde os dados que precisam ser acessados mais vezes ficarão armazenados temporariamente.

Aplicativos em execução

Não estou dizendo que aplicativos de monitoramento do sistema sejam ruins. Este tipo de ferramenta tem sido usado desde o início da popularização dos PC’s, na década 80 e ninguém morreu até agora. Veja aqui o modo hacker de checar o uso da memória no seu dispositivo.
O Android, tal como outros sistemas operacionais construídos sobre as raízes do Unix têm algo em comum, no que toca a RAM:

RAM não usada é RAM desperdiçada

O nosso Android, tal como o MacOS e o Ubuntu, deseja usar toda a memória RAM possível. Ele foi projetado para isto. Há ajustes (chamados “minfree“) que dizem ao sistema quanto de RAM deve ser deixado livre e disponível. Mas, para o resto, o sistema está programado para preencher o espaço mais rápido possível e manter-se assim.
Já se perguntou “com o quê ele preenche este espaço?”. É uma boa pergunta.
Depois que o sistema, em si, tiver sido carregado, junto com tudo o que ele precisa imediatamente para funcionar, o sistema continua a carregar os seus aplicativos à medida em que são usados, até que uma função interna diga para parar.
O aplicativo atualmente aberto estará, com certeza, na memória RAM, mesmo depois de fechado. O próximo também será armazenado lá e assim em diante. Quando o sistema precisar de mais memória para algum outro aplicativo, ele vai desocupar os lugares que não estiverem mais sendo usados.
Ainda que você tenha 100 apps em seu aparelho, só deve usar alguns com frequência. Há grande probabilidade de eles já estarem armazenados na RAM, o que torna a sua abertura mais rápida. Neste caso eles não precisam ser lidos do cartão SD, o que economiza seu tempo e sua bateria. Note que a leitura/escrita do cartão consome mais energia do que o acesso à RAM, além de ser mais lenta.
Veja bem. O que ele faz é manter o Google Talk (ou qualquer outro aplicativo) na memória RAM, depois de fechado, para abri-lo quase instantaneamente na próxima vez, já que não será mais necessário ler o cartão.
Por este ponto de vista é que não vale a pena eliminar o programa da memória. Caso você não o use mais e o espaço que ele ocupa se torne necessário para armazenar outras coisas, o sistema se encarregará de fazer isto. Caso contrário, ele irá abrir mais rápido para você depois.
Já imaginou ter que carregar o messenger do cartão a cada vez que chega uma notificação de nova mensagem?
Desta forma, acredito que tenha ficado claro que os aplicativos, na memória RAM, não estão consumindo espaço à toa. Estão poupando a sua bateria e não estão sequer importunando a sua CPU. Estão apenas prontos para carregar mais rápido na próxima vez em que forem requisitados.

Cada vez menos, estes problemas importam

Os aparelhos Android têm evoluído a uma grande velocidade, ainda enquanto estão sobre nossas mãos – Os softwares estão melhores, os aparelhos estão melhores e a galera que escreve os programas está se tornando melhor nisto. A evolução das ferramentas de programação, também merece destaque.
Alguns programas mais parrudos podem demorar para serem fechados, mas serão fechados – tenha nervos. Arme-se de paciência para lidar com isto ou os desinstale, até poder comprar um aparelho com mais memória e maior capacidade de processamento. Mesmo aplicativos bem escritos podem demorar para descarregar e limpar a memória dos dados usados durante a sessão.
Ao matar um aplicativo arbitrariamente, você pode “vê-lo” sumir da memória, mas podem continuar lá alguns sub-aplicativos ou plugins zumbis ou órfãos, que seriam fechados graciosamente pelas vias normais.
Para ter uma ideia do quanto isto é prejudicial ao sistema, desenvolvedores do kernel são enfáticos ao pedir que não se use task killers.

O cenário atual

Os aparelhos (celulares, tablets etc) estão vindo com uma quantidade mais decente de memória e capacidade de processamento capaz de fazer um netbook corar de vergonha. O gerenciamento de memória do Android acompanhou esta evolução do hardware. Há cada vez menos motivos para se confiar em task killers.

O melhor conselho

Deixe o Android fazer o seu trabalho, gerenciar a memória e os outros recursos do seu dispositivo. Pare de se preocupar com isto.

😉