Procesos Linux

index | OSiUX | blog | docs | charlas | rss

¿Qué es proceso?

  • Un proceso es la instancia de un programa en ejecución.
  • También se lo conoce como tarea.

¿Por qué?

  • GNU/Linux es un sistema multitarea, permite la ejecución de múltiples procesos al mismo tiempo.
  • Comprender el concepto de procesos nos permite administrar el rendimiento de nuestro equipo.

Lo que el usuario ve:

cfp-procesos-01.png

Lo que el sistema ve:

cfp-procesos-03.png

cfp-procesos-04.png

PID

  • Todo proceso que se inicia tiene un número asignado llamado PID.
  • Este PID permite identificar el proceso y administrarlo (detenerlo, reanudarlo etc…)
  • Ejemplo: Para obtener el PID de un proceso podemos usar el comando pidof:

    pidof init emacs
    
    1 9175
    

Listar procesos

El comando ps puede listar el estado de los procesos:

cfp-procesos-07.png

Operaciones

Los procesos se pueden controlar de manera externa.

El comando kill, xkill o killall permite enviarle señales a los procesos. Por ejemplo la señal de terminación:

cfp-procesos-08.png

Jerarquía

El comando pstree nos permite ver la organización de los procesos en ejecución:

ps -fax | grep -A 10 bash | head
23324 pts/12   Ss     0:00          \_ -bash
23470 pts/12   S+     0:00              \_ /bin/bash /home/osiris/bin/tmuxemacs
23475 pts/12   S+     0:00                  \_ tmux a -t emacs
 1830 ?        Ss     0:00 /lib/systemd/systemd-logind
 1853 ?        Ss     0:01 avahi-daemon: running [stout.local]
 1968 ?        S      0:00  \_ avahi-daemon: chroot helper
 1855 ?        Ss     0:45 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
 1972 ?        S      1:38 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc --hush
 1979 ?        Ssl    0:02 /usr/sbin/rsyslogd -n
 1985 ?        S      0:05 /usr/sbin/arpwatch -u arpwatch -N -p
pstree -p -U | head
systemd(1)─┬─/usr/bin/termin(4301)─┬─bash(4310)───tmuxmoc(4435)───tmux(4443)───sh(10217)───vlock-main(10218)
           │                       ├─gnome-pty-helpe(4309)
           │                       └─{gmain}(4311)
           ├─/usr/bin/termin(5167)─┬─bash(5174)───tmuxchat(5299)───tmux(5305)───sh(1722)───vlock-main(1731)
           │                       ├─gnome-pty-helpe(5173)
           │                       └─{gmain}(5175)
           ├─/usr/bin/termin(5664)─┬─bash(5672)───tmuxrcc(5805)───tmux(5815)───sh(15839)───vlock-main(15842)
           │                       ├─bash(17884)───vim(18035)─┬─{ruby-timer-thr}(18037)
           │                       │                          └─{vim}(18036)
           │                       ├─gnome-pty-helpe(5670)

En tiempo real

Para visualizar los procesos en ejecución, también se puede usar htop o top:

export TERM=linux
top -b -n1 | head -20
top - 10:54:45 up 2 days, 27 min,  8 users,  load average: 0,56, 0,35, 0,28
Tasks: 212 total,   1 running, 211 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5,2 us,  2,9 sy,  0,6 ni, 90,6 id,  0,6 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   3439000 total,  3257812 used,   181188 free,   321512 buffers
KiB Swap:        0 total,        0 used,        0 free.  1095340 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4252 root      20   0  213184  26664  11128 S   6,4  0,8 278:39.12 Xorg
11518 osiris    20   0  410688  38908  16212 S   6,4  1,1  22:51.39 /usr/bin/t+
    1 root      20   0  111456   5204   2832 S   0,0  0,2   0:03.27 systemd
    2 root      20   0       0      0      0 S   0,0  0,0   0:00.04 kthreadd
    3 root      20   0       0      0      0 S   0,0  0,0   0:15.00 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:+
    7 root      20   0       0      0      0 S   0,0  0,0   0:56.68 rcu_sched
    8 root      20   0       0      0      0 S   0,0  0,0   0:00.00 rcu_bh
    9 root      rt   0       0      0      0 S   0,0  0,0   0:00.44 migration/0
   10 root      rt   0       0      0      0 S   0,0  0,0   0:00.94 watchdog/0
   11 root      rt   0       0      0      0 S   0,0  0,0   0:00.94 watchdog/1
   12 root      rt   0       0      0      0 S   0,0  0,0   0:00.46 migration/1
   13 root      20   0       0      0      0 S   0,0  0,0   0:14.40 ksoftirqd/1

cfp-procesos-11.png

Resumen

  • Los procesos son instancias de programas en funcionamiento.
  • Los recursos del sistema son limitados, el sistema administra y hace posible compartir recursos.
  • Cada proceso tiene un identificador (PID), que nos sirve para enviar señales.

Changelog

[2013-03-18 lun] migro slides pdf de Hugo Ruscitti a .org

Author: Osiris Alejandro Gomez (osiux@osiux.com)

Date: 2012-11-06

Emacs 24.4.1 (Org mode 8.3beta)

Validate