|
| |
Comandos avançados
Gerenciando Processos
Entenda como os processos
podem ser administrados em
um sistema operacional Linux
Você sabe o que é um processo? Já
tentou criar um? Sabe como lidar com eles? Pois é, se você tem alguma
dúvida sobre as perguntas acima, então a dica é para você.
Qualquer tarefa atribuída ao Linux é um
processo. Você deve estar se perguntado agora: Como assim? Um ‘ls’ é um
processo? A resposta é: sim! Todo comando executado no Linux gera um número
de processo (PID) e através desse número podemos manipular o processo.
Temos diversos aplicativos que fazem essas manipulações. (Por exemplo: (top,
jobs, nice, kill, killall, nohup, bg, fg, ps, renice, etc...). Já sabemos
que para criar um processo, basta executar um comando. Vamos, porém,
executar um que não ficará sozinho, pois, assim, fica mais fácil visualizar
suas propriedades.
Execute:
# vi
Agora, em outra seção, digite:
# ps x |grep vi
1851 tty3 S 0:02 vi
O comando ps lista os processos atuais.
Temos diversos parâmetros para este comando, mas vou citar apenas dois: o
ps sem parâmetro lista todos os processos do tty atual, a opção ‘x’ lista
todos os processos da máquina e a opção ‘u’ inclui o autor do processo.
# ps ux |grep vi
root 1851 0.1 4.0 5356 2524
tty2 S 15:32 0:00 vi
Observe que no primeiro exemplo tivemos
um retorno, e, na primeira coluna do retorno, temos um número: o número do
processo do comando vi (1851). Podemos criar processos em background,
bastando colocar o caractere ‘&’ na frente do comando, mas é claro que
não usaremos um editor de texto em background.
# find / -name *.c &
Podemos visualizar nossos processos em
background com o comando jobs.
# jobs
[1]+ Running find / -name
*.c &
Podemos também tirar o processo do
background usando o comando ‘fg’ :
# fg
Quando temos apenas um job em
background, não precisamos especificar qual job queremos trazer para nosso
controle ‘foreground’, mas quando temos mais que um, precisamos especificar
o número do job, que aparece entre colchetes ‘[]’.
# jobs
[1]- Running find /
-name *.c
[2]+ Running find /
-name *.h
Após assumir o job com o comando fg,
você pode colocá-lo novamente em background, bastando apenas pressionar as
teclas CTRL+Z e, em seguida, executar o comando bg. Se você pressionar o
CTRL+Z e não chamar o bg, seu processo ficará parado.
# jobs
[1]+ Stopped find /
-name *.c
Podemos usar o CTRL+Z em qualquer
aplicativo que não utilize esta combinação de teclas. Tente fazer isso de
dentro do editor ‘vi’.
# vi
<tecle CTRL+Z>
[1]+ Stopped vi
Para voltar ao vi, digite:
# fg
Podemos matar nossos jobs com o comando
kill, especificando o número do job na frente do comando, desta forma:
# kill %1
[1]- Terminado vi
Com o kill também podemos matar outros
processos, bastando especificar o número do processo na frente do comando:
# kill <número do processo>
Para descobrir o número, utilize o
comando ‘ps’.
Agora, se precisarmos matar vários
processos que possuam o mesmo nome, podemos utilizar o comando killall.
Este comando recebe como parâmetro o nome do processo, e não o seu número.
# killall vi
Processos executados por usuários são
derrubados quando se faz um logout. Quando precisamos manter um processo em
atividade, mesmo após o logout, precisamos executá-los imunes a hungup.
Para isso usamos o nohup.
# nohup tar -cf backup.tar / &
Executando este comando acima você
poderá efetuar seu backup sem se manter logado. Toda a saída de erros ou
stdout será jogada em um arquivo ‘nohup.out’ no diretório atual em que foi
executado o comando.
Todos os processos em Linux têm
prioridades que vão de 19 (menos significativa) a -20 (mais significativa).
A prioridade default de um processo em execução pelo usuário é ‘zero’. Um
usuário comum pode alterar a prioridade default de seu processo de 0 a 19,
já o usuário root pode alterar as prioridades dos processos de qualquer
usuário de 19 a -20.
Para alterar essas prioridades temos
duas maneiras:
1) Executar um comando com prioridade não
default utilizando o ‘nice’.
2) Alterar a prioridade do processo depois que
ele estiver rodando com o comando ‘renice’.
Para executar um comando com prioridade
não default você pode utilizar:
# nice -19 tar -cf backup.tar /
Observe que para alterar uma prioridade
negativa você precisa colocar dois hífens no parâmetro:
# nice —19 tar cf backup.tar /
Podemos também alterar a prioridade de
um processo que já está em execução, usando o ‘renice’:
# renice <nova_prioridade> -p
<numero_do_processo>
# renice -20 -p 1351
1351: prioridade antiga = 0; prioridade
nova = -20
Também é possível fazer o monitoramento
on-line de todos os processos, com o comando ‘top’, veja Figura 1.
Na verdade, o top não é um simples
monitor de processos, é um gerenciador interativo de processos.
Veja alguns comandos do top:
k = mata um processo
s = altera o delay do update
i = ignora processos zombie
r = altera a prioridade (renice)
n = altera a quantidade de processos a
ser mostrado (0 = todos)
u = mostra os processos de um determinado
usuário
É claro que o que foi passado nesta
edição está longe de ser o único e/ou o melhor material sobre processos,
mas com certeza agora você pode se aventurar a conhecer melhor como eles
funcionam.
| | |
|
|
|
|