Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1.1 PS
Muestra información sobre los procesos en ejecución. Según las opciones que
destacadas son:
entonces un ‘?’
NI: Nice, valor nice (prioridad) del proceso, un número positivo significa
procesos zombies)
o D uninterruptible sleep, generalmente asociados con E/S del sistema
o X dead, muerto, terminado pero que sigue apareciendo (no debe haber)
(guión seguido de un único carácter), BSD (único carácter sin guión) y GNU
1.2 PSTREE
1.3 TOP
Para comprobar en tiempo real cómo están consumiendo recursos los procesos
del sistema es muy útil el comando top. En primer lugar muestra información
Una vez dentro podemos pulsar la tecla h para recibir ayuda del uso de las
q: sale de top
Otros programa similar, pero aún más visual y directo es htop, para
1.4 FREE
1.5 UPTIME
reinicio, así como la carga media del mismo en el último minuto, últimos 5
el sistema está rindiendo sobre sus capacidades, menos es que tiene poca
carga y más significa que los procesos tienen que esperar para ser atendidos.
1.6 PGREP
Permite seleccionar los procesos que concuerden con un patrón dado (se
comporta como grep). Además, también puede buscar buscar por atributos
Por defecto nos devuelve los PID de los procesos seleccionados, algo que
Ejemplos:
alumno
pgrep -l '^a'
Muestra los PID y el nombre de los procesos que empiecen por a (pgrep es
2 Administrar procesos
2.1 KILL
El comando kill sirve para enviar señales a los procesos. Se les puede ordenar
Se puede usar el nombre o el número de señal, pero siempre habrá que indicar
el PID (uno o varios) de los procesos a los que se les enviará la señal.
Ejemplos:
kill -9 5670
2.2 PKILL
Funciona Igual que kill, pero en lugar de utilizar el PID se puede utilizar su
Ejemplos:
pkill firefox
2.3 KILLALL
todos los procesos que tengan un nombre igual o similar. Por ejemplo todas
Con la opción -i nos pregunta por cada proceso antes de mandarle la señal y
Ejemplos:
kill -9 chromium
kill -9 5670
esperando sin poder utilizar el mismo terminal. Una de las soluciones posibles
haciendo, por eso suele ser recomendable redirigirla hacia otro lugar para que
3.2 JOBS
terminales abiertos, los números se repetirán en cada uno de ellos (algo que
plano, junto con su identificador. Este número se puede utilizar en lugar del
PID para hacer referencia a un proceso. Para que no haya confusión se pone
plano.
de la lista que ofrece el comandos jobs (no sobre el que está marcado con un
ejemplo fg %2
3.4 Nohup
terminar el proceso padre (el terminal) que lanzó la tarea, también se mandan
señales para que terminen todos los procesos hijos. Así que al cerrar el
podemos escribir antes del comando deseado, la orden nohup. Esto hará que
Nota: Para que el sistema envíe el la señal SIGHUP al cerrar sesión tiene que
3.4 Señales
Como hemos indicado, en ocasiones queremos terminar algún proceso, por ejemplo porque
pueden ser producidas por otros procesos, por el usuario o por el sistema operativo y en la
mayoría de los casos conducen a la terminación del proceso que recibe la señal. Hay diversos
tipos de señales, cada una tiene un número, un nombre que la identifica y una acción
predefinida (que generalmente puede ser cambiada por el proceso). Un usuario puede enviar
una señal a un proceso con el programa kill seguido de la señal que enviará y del proceso que
la recibirá:
Este ejemplo envía la señal SIGTERM al proceso con identificación 945 (en vez de SIGTERM
pudo haberse usado 15 que es el número que corresponde a esa señal). Puede consultar un
por usuarios:
15 SIGTERM
9 SIGKILL
Esta señal termina el proceso que la recibe de forma inmediata. Empleela sólo para detener
2 SIGINT
3 SIGQUIT
La misma señal producida por Control-\, su efecto es análogo al de SIGINT pero además actúa
20 SIGTSTP
La misma señal producida por Control-z, su efecto es suspender la ejecución de un proceso ---
18 SIGCONT
1 SIGHUP
Esta señal es enviada por bash a todas las tareas que se ejecutan en segundo plano, cuando el
usuario cierra la sesión (por ejemplo al cerrar una terminal en X-Window o cuando sale de su
sesión desde una consola virtual). Normalmente un proceso terminará cuando reciba esta
señal, pero puede lograrse que el proceso continué (es decir que ignore la señal SIGHUP) si el
comando se inició con nohup ---que evita que el programa reciba la señal SIGHUP) o si durante
su ejecución se indicó a bash no enviarle esta señal cuando se cierre la sesión, empleando el
comando disown. Esto es muy útil cuando debe dejar corriendo un proceso muy demorado
(horas o días) mientras usted no tiene una sesión abierta, por ejemplo para ejecutar el
programa make [41] en segundo plano, redireccionado salida estándar al archivo sm, error
PRÁCTICA
2. Por defecto, ps sólo ha mostrado los procesos asociados con la misma terminal
e iniciados por el mismo usuario. Vamos a recuperar las opciones que nos
lista de procesos que están corriendo en tu máquina. ¿Cuál lleva el PID igual a
3. El comando ps todavía nos puede ofrecer más información sobre los procesos
nuestra máquina? Vamos a usar las siguientes opciones del mandato ps:
“a” nos permite conocer todos los procesos que tienen una terminal asociada;
4. Todos los comandos y opciones que hemos visto hasta ahora ofrecían
directorio “/proc” del sistema. Hay algunas aplicaciones que también nos
RAM que están consumiendo). Ejecuta el mandato man top. ¿Qué hace el
mandato top?
modificar ciertas opciones y ajustarla a nuestros requisitos. Pulsa “q” para salir
6. Veamos ahora algunos atajos de teclado que nos permiten gestionar procesos.
Vamos a “matar” esa tarea. Intenta salir de la tarea con “q”. La tecla “q” nos
tarea. Teclea el atajo “Ctrl + C”. El mismo debería terminar con el proceso
7. Podemos ahora redirigir la salida del mandato a un fichero (observa que esto
terminal. Teclea “Ctrl + C” para detenerlo. ¿Qué tamaño ocupa ahora en disco
enviado?
Abre una nueva terminal si cerrar la anterior y localiza el PID del proceso “yes”
mandato kill. Como puedes observar, kill nos permite mandar señales a un
proceso. Interrumpe el proceso activo “yes” por medio del mandato kill
En nuestra terminal original vuelve a ejecutar el proceso “yes que tal >
/dev/null” y, desde la segunda terminal que hemos abierto, envíale ahora una
señal de SIGKILL haciendo uso del kill. Comprueba que el resultado externo ha
plano (esencialmente tiene que ver con la prioridad del mismo). La forma de
en nuestra terminal original, el siguiente mandato: yes otra vez > /dev/null &
10. Vamos a hacer ahora uso del mandato jobs. Comprueba en primer lugar su
función por medio de “help jobs”, y el significado de la opción “-l”. La
terminal que has ejecutado “yes”. ¿En qué estado se encuentra el proceso?
11. Entre los procesos de Linux siempre existe una jerarquía definida, ya que cada
proceso debe tener un proceso padre (excepto el proceso de inicio o init). Esta
general conlleva acabar también con los procesos hijos. En algunos casos, un
ver alguna de sus opciones en man pstree). Vuelve a ejecutar yes en la misma
terminal y también en segundo plano (yes mensaje > /dev/null &). Comprueba
el árbol de procesos por medio de “pstree -h”. Usando top, anota el porcentaje
Vuelve a comprobar el estado de los procesos iniciados en esta shell por medio
12. El hecho de que las tareas estén ejecutándose en segundo plano, impide que
les podamos enviar una señal de teclado (por ejemplo, Ctrl + Z, Ctrl + C). A
través de “jobs”, cada tarea que se está ejecutando desde nuestra terminal
recibe un nuevo número (1, 2...). Esos números pueden ser usados con fg
(foreground) para traer dichas tareas a primer plano (fg 1, fg 2), o para
Comprueba por medio de jobs que sólo queda una tarea activa.
13. Ejecuta el mandato “yes mensaje2 > /dev/null”. Por medio del teclado (Ctrl +
Z), o por medio de kill (con la señal SIGSTOP ó 19 y con el PID correspondiente)
Para recuperar una tarea detenida sólo tienes que ejecutar fg (foreground) o
primer plano.
Por medio de una señal o del atajo de teclado detén de nuevo la tarea. Vuelve
a iniciarla, esta vez en segundo plano (bg). Vuelve a detenerla sin traerla a
primer plano (puedes usar “jobs” para conocer el estado de las tareas en
ejecución). Para ello debes usar obligatoriamente señales por medio de kill.
Crea nuevas tareas por medio de “yes” en primer y segundo plano y prueba a
14. Vamos a recuperar ahora la idea de que todos los procesos dependen de su
proceso “padre”. Ejecuta varias veces seguidas el mandato “yes hola >
/dev/null &”. Ejecuta una nueva terminal. En esta terminal comprueba ahora la
cuáles son las que más recursos consumen. Si cerrases la terminal en que se
proceso “padre” de todos los procesos que están en ejecución, imagina lo que
sucedería al ejecutar “kill –s 9 1”. Desde la consola original, envía una señal de