LPI Criando, Monitorando e Matando Processos
Autor: Leandro Souto Maior | Publicado: 2012-05-28T09:46:00-03:00

     103.5 Criando, Monitorando e Matando ProcessosConhecimentos Principais Executar Processos em Primeiro e Segundo Plano
Manter um programa em Execução mesmo após o Logout
Monitorar Processos Ativos
Selecionar e Localizar processos em Execução
Matar processos.
     Comandos Trabalhados &amp;     
bg     
fg     
jobs     
kill     
nohup     
ps     
top     
free     
uptime     
killall&nbsp;

Bem Pessoal, estou realizando a postagem sobre como trabalhar com processos no Linux através de linha de comando.

O Primeiro termo a ser trabalhado será o "&amp;" que tem uma utilidade bem simples porém muito utilizada, no terminal digite: (Sem o símbolo $)


$ vi &amp;

Aparentemente nada acontece, mas na realidade o processo foi iniciado e jogado automaticamente para segundo plano, com o comando:

$ bg&nbsp;

Ele lista todos os processos e encontramos o processo vi, como estando em segundo plano. Através do comando fg [número do processo] (antes visto com o comando bg...) poderemos trazer o programa para foreground (primeiro plano):


$ fg 1

Agora pressione CTRL + Z, que isso jogará o processo novamente para segundo plano, e com o comando jobs poderemos novamente mostrar os processos em segundo plano, assim como o comando bg.


$ jobs

Poderemos matar processos com o comando kill, que podemos matar processos através do seu PID (Process Identifier), o primeiro passo para consegui-ló é através dos comandos ps ou top.

$ top

&nbsp;
&nbsp;Nesta tela poderemos verificar todos os processos em execução em tempo real, onde a primeira linha da esquerda informa o PID de cada processo, e o ultima linha mostra o nome do referido processo, bem semelhante aquela velha telinha do CTRL + ALT + DEL, do Windows. Porém nem sempre conseguimos localizar o que queremos com facilidade, para isso utilizamos o comando abaixo:


$ ps

Este comando sozinho mostra os processos iniciados através do terminal atual, para uma busca mais detalhada utilizamos a opção -aux que mostra todos os processos de todos os usuários em todos os terminais.


$ ps -aux

Com a utilização de filtros de pesquisa poderemos filtrar qualquer processo em execução, seja pelo nome ou qualquer outro critério adotado.


$ ps -aux | grep -w vi


-w foi utilizado para a pesquisa exata, retirando o -w o resultado deva ser bem semelhante...




Agora com o número do processo em mãos poderemos matar o processo, com o comando kill ou killall.

OBS: O Uso do comando kill sempre será necessário o número do processo, já o comando killall ele mata o processo pelo nome dele, ex: killall vi


kill [signal] [PID]

Onde sinal pode ser o nome dele ou o número que o identifica, precedido de - 
Sinais úteis podem ser:
SIGINT, que possui o mesmo efeito de se pressionar Ctrl+C para interromper um programa
SIGSTOP, que possui o mesmo efeito de se pressionar Ctrl+Z para parar um programa
SIGCONT, faz o programa parado continuar a execução
SIGQUIT, que força o programa a fazer um core dump
SIGKILL, que finaliza o programa
O comando kill sozinho envia o sinal por padrão 15, o comando que realiza com que o programa seja forçado a encerrar é o SIGKILL que é representado pelo 9.

$ kill -9 23792

Demais conhecimentos do Tópico são bem mais simples...

O Comando free mostra a memória RAM livre, pode usar com as opções -b mostra em bytes, -k em kilobytes, -m megabytes e -g gibabytes.

O Comando nohup serve para que o programa quando executado através dele não seja interrompido quando o usuário realizar o logout, muito útil quando estamos realizando por exemplo um download longo através do wget.

O Comando uptime serve para mostrar a quanto tempo nosso sistema está ativo (máquina ligada) e o estado de carga do sistema nos últimos 5 10 e 15 min.