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
systemd
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
aux
-ef
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
a
u
x
: nome do usuário que iniciou o processo.USER
: identificador do processo.PID
: porcentagem de tempo do processador usada pelo processo desde seu início.%CPU
: porcentagem de memória usada pelo processo no momento.%MEM
: quantidade total de memória requisitada pelo processo.VSZ
: quantidade total de memória usada pelo processo no momento.RSS
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.
: estado atual do processo.STAT
: hora de início do processo.START
: quantidade total de tempo do sistema usada pelo processo desde seu início.TIME
: comando usado para iniciar o processo. Se o nome do comando estiver entre colchetes, o processo é um thread do kernel.COMMAND
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
PID
PPID
C
%CPU
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