Às vezes, algumas tarefas requerem mais tempo de execução do que outras. Por esta razão cada processo possui uma prioridade de execução.
As prioridades dos processos podem ser determinadas examinando a coluna PRI do programa top ou do comando "ps -l".
nice
O comando
nice atribui um número de prioridade para um processo. Por default os processos de usuários são criados com prioridade 0. Nós podemos definir as prioridades oscilando entre +19 e -19, os números positivos indicam processos de baixa prioridade e os números negativos indicam processos de alta prioridade.
nice -n [número da prioridade] [comando/programa]
Vamos inicializar o
vi com um nível de prioridade baixa, veja o exemplo:
# nice -n 19 vi
# ps -lax | grep vi
000 0 1072 1014 19 19 8504 3560 do_sel SN pts/1 0:00 vi
Observe que a prioridade de processamento do
vi agora é baixa, podemos utilizar o
top para verificar a prioridade, veja o exemplo:
# top -d3 (Quando o programa iniciar pressione "T")
5:21pm up 1:09, 4 users, load average: 0,47, 0,32, 0,36
49 processes: 48 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 4,1% user, 2,2% system, 0,0% nice, 93,5% idle
Mem: 118964K av, 115336K used, 3628K free, 0K shrd, 42304K buff
50480K actv, 0K in_d, 0K in_c, 0K target
Swap: 100760K av, 22100K used, 78660K free 22012K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1087 root 18 0 1060 1060 848 R 3,5 0,8 0:00 top
1072 root 19 19 3560 3560 2584 S N 0,0 2,9 0:00 vi
679 root 9 0 1124 1120 452 S 0,0 0,9 0:00 klogd
renice
O
renice é um comando que altera a prioridade de um processo em execução.
renice [número da prioridade] [opção] processo
Podemos usar as seguintes opções:
- -g - Faz com que o parâmetro seguinte seja interpretado como um IDs de grupos de processos.
- -u - Faz com que o parâmetro seguinte seja interpretado como um nome de usuário.
- -p - Faz com que o parâmetro seguinte seja interpretado como um ID de processo.
Agora vamos mudar a prioridade do
vi para -19, com o processo em execução. Primeiro precisamos saber o número do processo, para isso podemos usar o comando
pgrep, veja o exemplo:
# pgrep vi
1072
# renice -19 -p 1072
1072: prioridade antiga = 19; prioridade nova = -19
Agora que mudamos a prioridade de execução vamos verificá-la:
# ps -lax | grep vi
000 0 1072 1014 1 -19 8504 3560 do_sel S< pts/1 0:00 vi
Observe agora que a prioridade do
vi agora é alta.
nohup
O
nohup é um comando que faz com que os processos ignorem o sinal hangup (sinal 1 - interrupção).
Vamos executar um processo que não poderá ser finalizado, veja o exemplo:
# nohup vi
nohup: appending output to `nohup.out'
# killall -1 vi
# ps -aux | grep vi
root 988 0.6 11.0 22120 13152 ? S 08:27 0:06 kghostview /mnt/w
root 1001 14.3 3.0 8500 3572 pts/3 RN 08:38 0:50 vi
root 1026 0.0 0.5 1724 668 pts/4 S 08:44 0:00 grep vi
Observe que o processo não foi finalizado, então agora vamos finalizá-lo:
# killall -9 vi
# ps -aux | grep vi
root 988 0.5 11.0 22120 13152 ? S 08:27 0:06 kghostview /mnt/w
root 1029 0.0 0.5 1724 668 pts/4 S 08:45 0:00 grep vi
Observe que o processo 1001 que representava o
vi foi finalizado.
Aqui terminamos o artigo sobre processos, espero que este artigo lhe ajude no dia a dia. Até mais...