terça-feira, 1 de fevereiro de 2011

O que fazer quando um programa trava e não responde [Linux]

Saudações... muitas vezes um programa simplesmente trava e não roda mais. Tentamos rodar novamente o programa e como ele está em execução simplesmente ele nem abre a janela. No windows, você abre o gerenciador de tarefas e termina o programa.

No linux fazemos isso também, mas de forma um pouco diferente. É importante aprender a trabalhar com terminais e alguns comandos são essenciais. O ps é um comando muito importante, pois auxilia o usuário a monitorar os processos. Você pode visualizar diversas informações sobre o processo. Depois vou postar um tutorial completo sobre o ps... hoje vamos apenas resolver o problema.

Os processos no Linux possuem um identificador numérico chamado de PID (Identificador do Processo). É como se fosse o CPF do processo no sistema. Para trabalhar com comandos você precisa abrir um terminal ou logar no modo texto. Para visualizarmos todos os processos vamos usar o seguinte comando:

ps -aef

Este comando mostra as seguintes informações:

vivas@computador:~$ ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2010 ? 00:00:01 init [2]
root 2 1 0 2010 ? 00:00:00 [migration/0]
root 3 1 0 2010 ? 00:00:00 [ksoftirqd/0]

UID é o usuário que é o dono do processo
PID é identificador do processo
PPID é o pai do identificador do pai do processo
C é o percentual de CPU
STIME
CMD é o comando que originou o processo
TIME é o tempo de CPU que o processo consumiu
STIME é quando o processo começou a rodar
TTY é o identificador do terminal onde o processo está terminando.

Precisamos descobrir o CPF do programa que estamos querendo terminar. Como exemplo vamos supor que o firefox travou. Então vamos usar o seguinte comando:

$ ps -aef | grep firefox
vivas 3194 1 0 2010 ? 00:00:05 /usr/sbin/firefox

O primeiro número (3194) é o identificador do processo, isto é, seu PID. Então vamos mandar um sinal para terminá-lo:

$ kill -9 3194

Agora é só rodar o comando ps -aef | grep firefox novamente e procurar novas ocorrências do processo. Se existirem outras simplesmente rode o comando kill -9 PID novamente.

Espero ter ajudado...

Seguidores