introdução
um servidor Linux, como qualquer outro computador que você possa estar familiarizado, executa aplicações. Para o computador, Estes são considerados “processos”.
enquanto o Linux irá lidar com a gestão de baixo nível, nos bastidores, no ciclo de vida de um processo, você vai precisar de uma forma de interagir com o sistema operacional para geri-lo a partir de um nível superior.
neste guia, vamos discutir alguns aspectos simples da Gestão de processos. Linux fornece uma coleção abundante de ferramentas para este propósito.,
vamos explorar estas ideias em um Ubuntu 12.04 VPS, mas qualquer distribuição Linux moderna irá operar de uma forma semelhante.
Como Visualizar Processos em Execução no Linux
topo
A maneira mais fácil de descobrir quais processos estão em execução no seu servidor está a executar o top
comando:
top
O top pedaço de dar informações estatísticas do sistema, tais como a carga do sistema e o número total de tarefas.
Você pode ver facilmente que há 1 processo em execução, e 55 processos estão dormindo (também conhecido como idle/não usando recursos de CPU).,
a parte inferior tem os processos em execução e suas estatísticas de uso.
htop
Uma versão melhorada de top
chamado de htop
, está disponível nos repositórios. Instalá-lo com o seguinte comando:
sudo apt-get install htop
Se executar o htop
comando, vamos ver que existe uma maneira mais amigável de exibição:
htop
Você pode aprender mais sobre como usar top e htop aqui.,
como usar ps para listar processos
ambos top
e htop
fornecem uma interface agradável para ver processos em execução semelhantes a um gestor de Tarefas gráfico.no entanto, estas ferramentas nem sempre são suficientemente flexíveis para cobrir adequadamente todos os cenários. Um comando poderoso chamado ps
é muitas vezes a resposta para estes problemas.,
Quando chamado sem argumentos, o resultado pode ser uma luster bit lack-luster:
ps
Esta saída mostra todos os processos associados com a sessão de utilizador e terminal actual. Isto faz sentido porque estamos apenas executando bash
e ps
com este terminal atualmente.,
Para obter uma imagem mais completa dos processos no sistema, podemos executar o seguinte:
ps aux
Estas opções dizer ps
mostrar processos de propriedade por todos os usuários (independentemente do seu terminal association) em um formato amigável.
Para ver um modo de exibição de árvore, onde hierarquizada de relações são ilustradas, podemos executar o comando com as seguintes opções:
ps axjf
Como você pode ver, o processo de kthreadd
é mostrado para ser um pai de ksoftirqd/0
processo de e outros.,
A Note About Process IDs
In Linux and Unix-like systems, each process is assigned a process ID, or PID. É assim que o sistema operacional identifica e acompanha os processos.
Uma maneira rápida de obter o PID de um processo é com o pgrep
comando:
pgrep bash
1017
Isto irá basta consultar o ID do processo e devolvê-lo.
o primeiro processo gerado no boot, chamado init, é dado o PID de “1”.,
pgrep init
1
Este processo é responsável pela postura de todos os outros processos no sistema. Os processos posteriores são dados números PID maiores.
O pai de um processo é o processo que foi responsável pela sua desova. Pai processos de ter um PPID, que você pode ver nos cabeçalhos de coluna no processo de muitos aplicativos de gerenciamento, incluindo top
htop
e ps
.,
qualquer comunicação entre o Usuário e o sistema operacional sobre processos envolve a tradução entre nomes de processos e PIDs em algum momento durante a operação. É por isso que os utilitários lhe dizem o PID.
as relações pai-filho
criar um processo filho acontece em dois passos: fork (), que cria um novo espaço de endereço e copia os recursos que pertencem ao Pai através do copy-on-write para estar disponível para o processo filho; e exec(), que carrega um executável no espaço de endereços e executa-o.,
no caso de um processo infantil morrer antes de seu pai, a criança torna-se um zumbi até que o pai tenha coletado informações sobre ele ou indicou ao núcleo que não precisa dessa informação. Os recursos do processo infantil serão então libertados. Se o processo pai morrer antes da criança, no entanto, a criança será adotada pelo init, embora também possa ser transferida para outro processo.
Como enviar sinais de processos em Linux
todos os processos em Linux respondem a sinais. Sinais são uma forma de dizer aos programas para terminar ou modificar seu comportamento.,
How To Send Processes Signals by PID
The most common way of passing signals to a program is with the kill
command.
Como você poderia esperar, a funcionalidade padrão do utilitário é a tentativa de matar um processo de:
<pre>
kill <span class=”destaque”>PIDoftarget_process<div>
</pre>
Este envia o TERMO de sinal para o processo., O termo sinal diz ao processo para terminar por favor. Isto permite ao programa executar operações de limpeza e sair sem problemas.,
Se o programa está funcionando corretamente e não sair quando for dado o sinal TERM, podemos escalar o sinal, passando o KILL
sinal:
<pre>
kill-kill <span class=”destaque”>PIDoftarget_process<div>
</pre>
Este é um sinal especial que não é enviado para o programa.,
em vez disso, ele é dado ao kernel do sistema operacional, que desliga o processo. Isto é usado para contornar programas que ignoram os sinais enviados para eles.
cada sinal tem um número associado que pode ser passado em vez do nome. Por exemplo, você pode passar “-15” em vez de “-termo”, e “-9” em vez de “-matar”.
como usar sinais para outros fins
sinais não são apenas usados para desligar programas. Eles também podem ser usados para realizar outras ações.
Por exemplo, muitos daemons irão reiniciar quando lhes for dado o HUP
, ou sinal de suspensão., Apache é um programa que opera assim.
<pre>
sudo kill-HUP <span class=”destaque”>pidofapache<div>
</pre>
O comando acima fará com que o Apache para recarregar o arquivo de configuração e retomar a veiculação de conteúdo.,
Você pode listar todos os sinais que são possíveis para enviar com o kill escrevendo:
kill -l
Como Enviar Sinais de Processos por Nome
Embora a maneira convencional de envio de sinais, é através do uso de PIDs, também existem métodos de se fazer isso com o regular processo nomes.,
pkill
comando funciona em quase exatamente da mesma forma como kill
, mas ele opera em nome de um processo em vez de:
pkill -9 ping
O comando acima é equivalente a:
kill -9 `pgrep ping`
Se você gostaria de enviar um sinal para cada instância de um determinado processo, você pode usar o killall
comando:
killall firefox
O comando acima irá enviar o TERMO de sinal para cada instância do firefox em execução no computador.,
como ajustar as prioridades do processo
muitas vezes, você vai querer ajustar quais processos são dados prioridade em um ambiente servidor.alguns processos podem ser considerados críticos de missão para a sua situação, enquanto outros podem ser executados sempre que haja restos de recursos.
Linux controla prioridade através de um valor chamado niceness.as tarefas de alta prioridade são consideradas menos agradáveis, porque não compartilham recursos também. Os processos de baixa prioridade, por outro lado, são agradáveis, porque insistem em tomar apenas recursos mínimos.,
Quando corremos top
no início do artigo, havia uma coluna marcada como “NI”. Este é o bom valor do processo:
top
Nice values can range between “-19/-20” (highest priority) and “19/20” (lowest priority) depending on the system.,
To run a program with a certain nice value, we can use the nice
command:
<pre>
nice -n 15 <span class=”highlight”>commandtoexecute</span>
</pre>
This only works when beginning a new program.,=”9b4b74b24a”>:
<pre>
renice 0 <span class=”destaque”>PIDtoprioritize<div>
</pre>
Nota: Enquanto nice opera com um nome de comando por necessidade, renice opera chamando o PID do processo
Conclusão
Processo de gestão é um tema que, por vezes, é difícil para os novos usuários a entender porque as ferramentas utilizadas são diferentes de seus gráficos correspondentes.,no entanto, as ideias são familiares e intuitivas, e com um pouco de prática, tornar-se-ão naturais. Como os processos estão envolvidos em tudo o que você faz com um sistema de computador, aprender a controlá-los eficazmente é uma habilidade essencial.
<div class=”autor”>Por Justin Ellingwood</div>
Leave a Reply