Procesos en Linux

Lanzar y matar procesos

  • Cuando lanzamos un comando se ejecuta en primer plano.
    $ yes > /dev/null

    Para matarlo pulsaremos <Ctrl+C>.

  • Para lanzar un proceso en segundo plano se añade "&" al final:
    $ yes > /dev/null &

    Para ver los procesos en segundo plano usaremos el comando jobs:

    $ jobs
    [1]- Running yes >/dev/null &

    Para matar un proceso en segundo plano usaremos el comando kill, pasándole como argumento el número de tarea:

    $ kill %1
  • Para cerrar una aplicación colgada en el entorno gráfico podemos utilizar xkill y hacer click sobre la ventana que se ha colgado:
    $ xkill
    Select the window whose client you wish to kill with button 1...

Monitorizar procesos desde el shell

Para monitorizar los procesos desde el shell tenemos varios comandos:

  • pstree (paquete psmisc): el comando pstree -p muestra los procesos en árbol.

    pstree

  • ps (process status): el comando ps -ef lista todos los procesos.

    ps

  • top: como ps pero en tiempo real.

    top

  • free: muestra la memoria RAM libre y usada.

    free

  • watch: ejecuta un comando repetidamente (por defecto, cada 2 segundos) mostrando su salida a pantalla completa, de manera que permite monitorizar la salida del comando. Por ejemplo, si estamos reconstruyendo un RAID, podemos monitorizar cómodamente el proceso con el comando:
    $ watch -n1 'cat /proc/mdstat'

Monitorizar procesos en el entorno gráfico

Para monitorizar los procesos en el entorno gráfico tenemos varias opciones:

  • GKrellM (GNU Krell Monitors, gkrellm.net, paquete gkrellm): es la aplicación más utilizada en Linux para monitorizar el sistema. Tiene la apariencia de una barra de herramientas y dispone de infinidad de temas y plugins (algunos de ellos muy útiles, como GKkrellMLaunch, que permite colocar iconos para lanzar aplicaciones, muy interesante en window manager mínimos), todo ello con un bajo consumo de recursos.

    Además, podemos monitorizar otras máquinas instalando en ellas el servidor gkrellmd (paquete gkrellmd, script de inicio /etc/init.d/gkrellmd, archivo de configuración /etc/gkrellmd.conf). El comando a ejecutar en el servidor es:

    # gkrellmd

    El comando a ejecutar en el cliente es:

    $ gkrellm --server <IP_servidor>

    GKrellM

    Podemos descargar plugins y temas desde gkrellm.net:

    • plugins: ubicaremos su librería <librería.so> en:

      ~/.gkrellm2/plugins

    • temas: son ficheros .tar.gz que descomprimiremos en el directorio:

      ~/.gkrellm2/themes/<tema>

  • KSysGuard (paquete ksysguard): herramienta de monitorización de KDE. Puede monitorizar otras máquinas si instalamos en ellas el daemon ksysguardd (paquete ksysguardd).

    KSysGuard

  • GNOME-system-monitor (paquete gnome-system-monitor): herramienta de monitorización de GNOME.

    GNOME-system-monitor

8 Comments:

  1. hola!
    es muy bueno tu enfoque me gustaria mas informacion sobre todos los procesos que se realizan en linux

  2. Si se teclea la siguiente secuencia de órdenes:
    $ yes
    Ctrl+Z
    [1]+ Stopped yes
    $ bg %1
    ¿Qué sucede? ¿Cómo se puede parar el proceso yes? ¿Se puede parar o matar sin cambiar de consola? ¿Cómo? (necesito al menos dos maneras).
    GRACIAS. antonio441@hotmail.es

  3. Antonio, consulta la ayuda del comando ‘bg’…
    $ help bg
    bg: bg [job_spec ...]
    Resume the suspended job ‘job_spec’ in the background, as if it had been
    started with &.
    El proceso suspendido se reanuda en segundo plano, por lo que puedes matarlo con ‘kill’.
    En este caso no puedes acceder a la terminal porque está ocupada con la salida de ‘yes’. Prueba a redirigir previamente la salida con ‘yes > /dev/null’

  4. Gracias con retraso. xD

  5. ¿Cuál es la señal más fuerte que se le puede enviar a un proceso? ¿Cómo mato un poroceso con kill -9?

  6. ¿Por qué Control + C no afecta a los procesos en segundo plano?

  7. ¿La siguiente salida de dónde sale?: Running yes >/dev/null & – Stopped vi fichero.txt + Stopped yes ¿Cómo mato sin kill?

  8. ¿Qué pasa si cerramos sesión teniendo trabajos parados? ¿Y si los trabajos en segundo plano estan ejecutandose?