Obtendo a Lista de Processos - Linux

Ao carregar um sistema operacional baseado em Linux, o kernel é o primeiro a ser iniciado. O kernel, por sua vez, é responsável por iniciar o primeiro processo, que nos sistemas modernos é o processo systemd. Esse processo é responsável por todos os outros processos. Ao iniciar um processo, systemd o faz como um processo filho. O processo filho iniciado pode, por sua vez, iniciar outros processos, formando assim uma árvore de processos.

Para visualizar a árvore de processos, pode-se usar o comando pstree:

programicio@Programicio:~$ pstree
systemd─┬─ModemManager───3*[{ModemManager}]
        ├─NetworkManager───3*[{NetworkManager}]
        ├─accounts-daemon───3*[{accounts-daemon}]
        ├─apache2───5*[apache2]
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─boltd───3*[{boltd}]
        ├─colord───3*[{colord}]
        ├─cron
        ├─cups-browsed───3*[{cups-browsed}]
        ├─cupsd───dbus
        ├─dbus-daemon
        ├─fwupd───5*[{fwupd}]
        ├─gdm3─┬─gdm-session-wor─┬─gdm-wayland-ses─┬─gnome-session-b───3*[{gnom+
        │      │                 │                 └─3*[{gdm-wayland-ses}]
        │      │                 └─3*[{gdm-session-wor}]
        │      └─3*[{gdm3}]
        ├─irqbalance───{irqbalance}
        ├─2*[kerneloops]

Para monitorar processos no Linux, usa-se o comando ps. Esse comando possui muitas opções, mas as mais utilizadas são aux e -ef. Por exemplo, para visualizar o estado de todos os processos, usa-se o comando ps aux:

programicio@Programicio:~$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0 169800 12476 ?        Ss   07:30   0:02 /sbin/init sp
root           2  0.0  0.0      0     0 ?        S    07:30   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   07:30   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   07:30   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   07:30   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   07:30   0:00 [netns]
programicio     19276  100  0.0  14144  4992 pts/0    R+   14:24   0:00 ps aux

Formalmente, aux consiste em três opções: a opção a exibe todos os processos, a u fornece informações detalhadas sobre o uso, e a x mostra a qual TTY(terminal) e qual usuário iniciou o processo. Vamos analisar brevemente as colunas exibidas:

  • USER: nome do usuário que iniciou o processo.

  • PID: identificador do processo.

  • %CPU: porcentagem de tempo do processador usada pelo processo desde seu início.

  • %MEM: porcentagem de memória usada pelo processo no momento.

  • VSZ: quantidade total de memória requisitada pelo processo.

  • RSS: quantidade total de memória usada pelo processo no momento.

  • TTY: terminal de onde o processo foi iniciado. O sinal de interrogação indica um processo daemon que não está associado a nenhum TTY.

  • STAT: estado atual do processo.

  • START: hora de início do processo.

  • TIME: quantidade total de tempo do sistema usada pelo processo desde seu início.

  • COMMAND: comando usado para iniciar o processo. Se o nome do comando estiver entre colchetes, o processo é um thread do kernel.

Um resultado semelhante pode ser obtido usando outra combinação de opções: -ef.

programicio@Programicio:~$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 09:26 ?        00:00:00 /sbin/init splash
root           2       0  0 09:26 ?        00:00:00 [kthreadd]
root           3       2  0 09:26 ?        00:00:00 [rcu_gp]
root           4       2  0 09:26 ?        00:00:00 [rcu_par_gp]
root           5       2  0 09:26 ?        00:00:00 [slub_flushwq]
root           6       2  0 09:26 ?        00:00:00 [netns]
programicio      4096    3806  0 09:29 ?        00:00:00 /snap/code/155/usr/share/cod
programicio      4248    3601 50 09:30 pts/0    00:00:00 ps -ef

Primeiro, são exibidas as colunas do usuário (UID) que iniciou o processo e o identificador do processo (PID). Ao contrário do resumo anterior, a saída também inclui a coluna PPID, que armazena o identificador do processo pai. Em seguida, vem a coluna C, que mostra o uso do processador pelo processo, similar à coluna %CPU no resumo do comando ps aux.

Combinando esse comando com comandos de processamento de texto, podemos fazer uma filtragem. Por exemplo, para obter todos os processos cujo comando contém gnome:

programicio@Programicio:~$ ps aux | grep gnome
programicio      2520  0.0  0.0 298564 16320 tty2     Sl+  09:27   0:00 /usr/libexec/gnome-session-binary --session=ubuntu
programicio      2599  0.0  0.0  91492  5376 ?        Ssl  09:27   0:00 /usr/libexec/gnome-session-ctl --monitor
programicio      2645  5.7  0.5 6473112 337724 ?      Ssl  09:27   6:17 /usr/bin/gnome-shell
programicio      2800  0.0  0.0 235984  7296 ?        Sl   09:27   0:00 /usr/libexec/at-spi2-registryd --use-gnome-session
programicio      2819  0.0  0.0 655292 16320 ?        Sl   09:27   0:00 /usr/libexec/gnome-shell-calendar-server
programicio      3210  0.0  0.0 897828 40236 ?        Ssl  09:27   0:00 /usr/libexec/xdg-desktop-portal-gnome
programicio      3581  0.4  0.0 706412 59960 ?        Ssl  09:28   0:31 /usr/libexec/gnome-terminal-server
programicio     10800  0.0  0.0   9120  2112 pts/0    S+   11:16   0:00 grep --color=auto gnome

De forma semelhante, podemos encontrar todos os processos relacionados ao navegador Google Chrome:

ps aux | grep chrome
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com