O FreeBSD é um sistema operacional multi-tarefa. Isso significa que ele cria um ambiente onde os recursos computacionais são divididos de forma à parecer que mais de um programa é executado ao mesmo tempo. Cada processo sendo executado à qualquer momento, é chamado de um processo. Todo comando que você executar, iniciará ao menos um novo processo, e existem vários processos do sistema que estão sempre em execussão, mantendo a funcionalidade do ambiente como um todo.
Cada processo é identificado de forma única com um número, que é chamado de identificação do processo, ou process ID, ou então a forma abreviada e mais comum, PID, e, assim como os arquivos, cada processo também tem um dono e grupo. As informações sobre dono e grupo são utilizadas com o intúito de determinar que arquivos e dispositivos o processo pode abrir, utilizando as permissões discutidas anteriormente. A maioria dos processos tem ainda um processo pai. O processo pai é o processo que o iniciou. Por exemplo, quando você digita um comando em uma shell, então essa shell é um processo, e todo comando executado é outro processo. Todo comando executado desta forma terá sua shell como o processo pai. A única excessão é um processo especial chamado de init(8). O init é sempre o primeiro processo do sistema, portanto seu PID é sempre 1. O init é executado automaticamente pelo kernel quando o FreeBSD é iniciado.
Dois comandos são particularmente úteis para verificar os processos ativos no sistema, o ps(1) e o top(1). O comando ps é usado para apresentar uma lista estática dos processos sendo executados no momento, e pode apresentar seu PID, quanta memória o processo está utilizando, a linha de comando que o iniciou, e assim por diante. O comando top apresenta todos os processos em execussão, e atualiza a forma como os apresenta na tela a cada poucos segundos, de forma que você possa acompanhar o que o computador está fazendo.
Por padrão o ps apenas apresenta os comandos que estão sendo executados por você, e cuja propriedade também seja sua. Por exemplo:
% ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish
Como você pode acompanhar neste exemplo, a saída do comando ps(1) é organizada em várias colunas. PID é a identificação do processo discutida anteriormente. PIDs são atribuíudos à partir do 1, e vão até 99999, e reiniciam a contagem quando ultrapassa esse valor. A coluna TT posta em que terminal o programa esta sendo executado, e pode seguramente ser ignorado no momento. STAT apresenta o estado atual do programa, e, mais uma vez, vamos ignora-lo por hora. TIME indica a quantidade de tempo que o programa está em execussão na CPU em questão -- normalmente não é o tempo total desde que o processo foi iniciado, e sim tempo de execussão, uma vez que vários programas ficam um bom tempo esperando que algo aconteça para eles utilizarem tempo de processamento da CPU. Finalmente, COMMAND é a linha de comando utilizada para executar o programa em questão.
ps(1) suporta uma série de opções distintas que modificam as informações apresentadas. Um dos cunjuntos mais úteis de opções é auxww. a apresenta informações sobre todos os processos em execussão, não apenas os de sua propriedade. u apresenta o nome do usuário que é o dono do processo, bem como o uso de memória do mesmo. x apresenta informações sobre processos daemon, e ww faz o ps(1) apresentar a linha de comando completa, ao invés de um trecho compactado para caber na tela.
A saída do top(1) é similar. Uma sessão modelo teria a seguinte aparência:
% top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ...
A saída está dividida em duas seções. O cabeçalho (as primeiras cinco linhas) apresenta o PID do último processo executado, a média de carga do sistema (que mede o quanto o sistema está ocupado), e o tempo de atividade initerrupta do sistema (tempo desde a última inicialização - o uptime). As outras informações do cabeçalho inidicam quantos processos (47 neste caso) estão ativos, quando de memória e swap foi utilizado, e quanto tempo o sistema está gastando em estados diferentes de uso da CPU.
Abaixo está uma série de colunas com informações similares à saída do ps(1). Como antes, você pode ver o PID, o usuário, o tempo de CPU utilizado, e o comando executado. top(1) também mostra por padrão a quantidade de memória utilizada pelo processo. Essa informação é dividida em dois grupos, uma para o tamanho total de memória, e um para o tamanho residente -- tamanho total indica quanta memória a aplicação já precisou, e o tamanho residente é a quantidade em uso no momento. Nesse exemplo você pode ver que o Netscape® precisou quase de 30 MB de RAM, mas no momento está usando apenas 9 MB.
top(1) atualiza automaticamente as informações a cada dois segundos, o que pode ser modificado com a opção s.
Anterior | Principal | Próxima |
Montando e desmontando sistemas de arquivos | Acima | Daemons, sinais e controle de processos |
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.