No coração do
Linux está o conceito de processo. Entender esse conceito vai ajudá-lo a manter o controle de sua sessão de trabalho. Um processo é um programa que executa independentemente e que possui seu próprio conjunto de recursos. Por exemplo, foi dito anteriormente que o usuário poderia abrir mais de um shell na mesma estação. A razão pela qual o usuário pode fazer isso é porque cada shell é um processo separado.
No Linux, e em Unix em geral, os recursos finitos do sistema, como memória e disco, são gerenciados por um programa todo poderoso denominado kernel. Tudo mais no sistema é um processo. Por exemplo: antes do usuário logar, o terminal está sendo monitorado por um processo (nesse caso o getty). Uma vez que o usuário "loga", o processo de monitoração "morre" (ele é finalizado e um novo processo é iniciado quando o usuário efetuar o logout) e o terminal passa a ser gerenciado pelo shell do usuário, que é um processo diferente. O shell então cria um novo processo cada vez que o usuário entra um comando.
Um processo pode ser executado de duas formas:
Primeiro plano - Também chamado de foreground. Quando você deve esperar o término da execução de um processo para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução deste processo.
Segundo plano - Também chamado de background. Quando você não precisa esperar o término da execução de um processo para executar um novo comando. Após iniciar um processo em background, é mostrado um número PID (identificação do Processo), e o prompt é novamente mostrado, permitindo o uso normal do sistema. O programa executado em background continua sendo executado internamente.
Comandos para manipular processos:
- CTRL+C - Cancela a execução de um processo rodando em primeiro plano.
- CTRL+Z - Suspende a execução de um processo rodando em primeiro plano.
fg - Permite fazer um processo rodando em segundo plano ou parado, rodar em primeiro plano. Para tanto, deve ser passado como parâmetro o número do processo que se pretende manipular.
Exemplos:
$ fg 1
$ fg 239
bg - Permite fazer um processo rodando em primeiro plano ou parado, rodar em segundo plano. Também deve ser passado o número do processo.
Exemplos:
$ bg 1
$ bg 239
ps - Mostra quais processos estão sendo executados no computador, além de qual usuário executou o programa, hora que o processo foi iniciado, etc.
Atributos disponíveis:
- -a = Mostra os processos criados por você e de outros usuários do sistema;
- -x = Mostra processos que não são controlados pelo terminal;
- -u = Mostra o nome de usuário que iniciou o processo e hora em que o processo foi iniciado;
- -f = Mostra a árvore de execução de comandos (comandos que são chamados por outros comandos);
- -e = Mostra variáveis de ambiente no momento da inicialização do processo.
Exemplos:
$ ps -ef
$ ps -aux
Quando há muitos processos para serem listados, é melhor usar:
ps <opção> | more
ou
ps <opção> | grep <nome_do_processo>
Colocando um processo em background "&":
$ netscape &
Matar um processo (muito usado quando alguma aplicação trava):
$ kill -9 <id do processo>
top - Mostra os programas em execução ativos, parados, tempo usado na CPU, detalhes sobre o uso da memória RAM, swap, disponibilidade do sistema para execução de programas, etc. O top é um processo que fica em execução mostrando continuamente todos os processos que estão rodando na máquina naquele momento e os recursos utilizados por eles. Para sair do top, pressione a tecla q.
Comandos disponíveis:
- -d [tempo] = Atualiza a tela após o [tempo] (em segundos);
- -i = Inicia o top ignorando o tempo de processos zumbis;
- -c = Mostra a linha de comando ao invés do nome do programa.
Exemplos:
$ top
$ top -c