07 Capitulo7

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

Capítulo 7 - Administración y control de

procesos Linux
Generalidades

Para evaluar y controlar procesos que se ejecutan en un sistema


Objetivo
Red Hat Enterprise Linux.

 Enumere e interprete la información básica sobre los


procesos que se ejecutan en el sistema.

 Procesos de control en la sesión de la shell que usan el


Objetivos control de trabajo de Bash.

 Finalice y controle los procesos con las señales.

 Controle el uso de recursos y la carga del sistema debido a


la actividad del proceso.

 Procesos (y práctica)

 Control de trabajos (y práctica)


Secciones
 Procesos de finalización (y práctica)

 Control de la actividad de proceso (y práctica)

Ejercicio de
 Administración y control de procesos Linux
laboratorio
7.1 Procesos

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:

 Definir el ciclo de vida de un proceso.

 Definir los estados de un proceso.

 Ver e interpretar listas de procesos.

Procesos

Un proceso es una instancia de un programa ejecutable que se inició y se encuentra en


funcionamiento. Un proceso consta de lo siguiente:

 un espacio de direcciones que incluye la memoria asignada;

 características de seguridad, que incluyen credenciales y privilegios de propiedad;

 uno o más subprocesos de ejecución de código de programa; y

 el estado del proceso.

El entorno de un proceso incluye lo siguiente:

 variables locales y globales;

 un contexto de programación actual; y

 recursos asignados del sistema, como descriptores de archivos y puertos de red.

Un proceso (principal) existente duplica su propio espacio de direcciones (bifurcación) para crear
una nueva estructura de proceso (secundaria). Se asigna una identificación de proceso (PID) única a
cada proceso nuevo para su rastreo y por motivos de seguridad. La PID y la identificación del proceso
principal (PPID) son elementos del entorno del proceso nuevo. Cualquier proceso puede crear un
proceso secundario. Todos los procesos derivan del primer proceso de sistemas, que es systemd(1)
en un sistema Red Hat Enterprise Linux 7.

Figura 7.1: Ciclo de vida de un proceso


A través del procedimiento de bifurcación, un proceso secundario hereda identidades de seguridad,
descriptores de archivos actuales y anteriores, privilegios de recursos y puertos, variables de
entorno y código de programa. Luego, un proceso secundario puede ejecutar su propio código de
programa. Normalmente, un proceso principal se encuentra durmiendo mientras se ejecuta el
proceso secundario, lo que establece que una solicitud (espera) se señale cuando finalice el proceso
secundario. Tras su finalización, el proceso secundario ya ha cerrado o descartado sus recursos y su
entorno; el resto del proceso se conoce como zombie. El proceso principal, que se señala como
activo una vez que finaliza el proceso secundario, limpia la estructura restante y continúa con la
ejecución de su propio código de programa.

Estados de los procesos

En un sistema operativo de funciones múltiples, cada CPU (o núcleo de CPU) puede trabajar en un
proceso en un momento dado. Mientras se ejecuta un proceso, sus requisitos inmediatos en cuanto
a asignación de recursos y tiempo de la CPU cambian. Los procesos reciben un estado, que cambia
en la medida en que las circunstancias así lo exijan.

Figura 7.2: Estados de los procesos de Linux

Los estados de los procesos de Linux se ilustran en el diagrama anterior y se describen en la siguiente
tabla.
Estados de los procesos de Linux

Nombre Indicador Nombre y descripción del estado definido por el núcleo

TASK_RUNNING: El proceso se está ejecutando en una CPU o se


encuentra en espera de su ejecución. El proceso puede estar
En
R ejecutando rutinas del usuario o rutinas del núcleo (llamadas del
ejecución
sistemas); también puede estar en cola y listo cuando esté en el
estado En ejecución (o Ejecutable).

TASK_INTERRUPTIBLE: El proceso se encuentra en espera de que se


dé cierta condición, como una solicitud de hardware, el acceso a un
S
recurso del sistema o una señal. Cuando un evento o una señal
cumple con la condición, el proceso regresa al estado En ejecución.

TASK_UNINTERRUPTIBLE: Este proceso también se encuentra En


espera, pero a diferencia del estado S, no responderá a las señales
En espera D enviadas. Solo se utiliza en ciertas condiciones en las que la
interrupción del proceso puede dar lugar a un estado imprevisto del
dispositivo.

TASK_KILLABLE: Igual al estado D ininterrumpido, solo que


modificado para permitir que la tarea en espera responda a una
K
señal de anulación (salida completa). Las utilidades con frecuencia
muestran procesos anulables como procesos con estado D.

TASK_STOPPED: El proceso se ha Detenido (suspendido),


generalmente porque otro usuario u otro proceso lo señalizó. Otra
T
señal puede hacer que el proceso continúe (se reanude) y regrese
al estado En ejecución.
Detenido

TASK_TRACED: Un proceso que se está depurando también se


T encuentra temporalmente Detenido y comparte el mismo indicador
de estado T.

EXIT_ZOMBIE: Un proceso secundario señala su proceso principal


Z
cuando finaliza. Todos los recursos, menos la PID, se liberan.

Zombie EXIT_DEAD: Cuando el proceso principal limpia (obtiene) la


estructura del proceso secundario restante, el proceso se libera
X
completamente. Este proceso nunca se observará en utilidades de
listas de procesos.
Listas de procesos

El comando ps se utiliza para elaborar una lista de los procesos actuales. El comando puede
proporcionar información detallada de los procesos, que incluye:

 la identificación del usuario (UID) que determina los privilegios del proceso;

 la identificación del proceso (PID) única;

 la CPU y el tiempo real empleado;

 la cantidad de memoria que el proceso ha asignado en diversas ubicaciones;

 la ubicación del proceso STDOUT, conocido como terminal de control; y

 el estado del proceso actual.

Importante

La versión de ps de Linux admite tres formatos de opciones, a saber:

 opciones UNIX (POSIX), que pueden agruparse y deben estar precedidas por un guión;

 opciones BSD, que pueden agruparse y no deben usarse con un guion; y

 opciones extensas GNU, que están precedidas por dos guiones.

Por ejemplo, ps -aux no es igual a ps aux.

Una lista de visualización común (opciones aux) muestra todos los procesos, con columnas que
serán de interés para los usuarios, e incluye procesos sin una terminal de control. Una lista extensa
(opciones lax) proporciona detalles más técnicos, pero puede visualizarse más rápidamente porque
no realiza la búsqueda de nombre de usuario. La sintaxis de UNIX similar usa las opciones -efpara la
visualización de todos los procesos.
[student@serverX ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 51648 7504 ? Ss 17:45 0:03 /usr/lib/systemd/syst
root 2 0.0 0.0 0 0 ? S 17:45 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 17:45 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 17:45 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 17:45 0:00 [migration/0]
-- salida truncada --
[student@serverX ~]$ ps lax
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 51648 7504 ep_pol Ss ? 0:03 /usr/lib/systemd/
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 20 0 0 0 smpboo S ? 0:00 [ksoftirqd/0]
1 0 5 2 0 -20 0 0 worker S< ? 0:00 [kworker/0:0H]
1 0 7 2 -100 - 0 0 smpboo S ? 0:00 [migration/0]
-- salida truncada --
[student@serverX ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:45 ? 00:00:03 /usr/lib/systemd/systemd --switched-ro
root 2 0 0 17:45 ? 00:00:00 [kthreadd]
root 3 2 0 17:45 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 17:45 ? 00:00:00 [kworker/0:0H]
root 7 2 0 17:45 ? 00:00:00 [migration/0]
-- salida truncada --

De manera predeterminada, el comando ps sin opciones selecciona todos los procesos que tienen
la misma identificación de usuario efectivo (EUID) que el usuario actual y que están asociados con la
misma terminal en la que se invocó ps.

 Los procesos entre corchetes (normalmente en la parte superior) son subprocesos del
núcleo programados.

 Los procesos zombies aparecen en una lista ps como finalizado u obsoleto.

 ps se muestra una vez. Utilice la opción top(1) para una visualización de procesos de
actualización repetitiva.

 ps puede mostrar los resultados en formato de árbol para ver las relaciones de procesos
primarios y secundarios.

 El resultado predeterminado no está ordenado. El orden de visualización coincide con el de


la tabla de procesos del sistema, que reutiliza las filas de la tabla, ya que ciertos procesos
finalizan y otros nuevos se crean. Los resultados pueden aparecer en orden cronológico,
pero esto no es seguro a menos que se usen las opciones explícitas -O o --sort.

Referencias

info libc signal (Manual de referencias de la biblioteca GNU C)

 Sección 24: Manejo de señales

info libc processes (Manual de referencias de la biblioteca GNU C)

 Sección 26: Procesos

Páginas de manual ps(1) y signal(7)


7.2 Práctica: Procesos

Establezca una coincidencia entre los siguientes elementos y sus equivalentes de la tabla.

Arrastre y suelte los elementos en la celda junto a la respuesta correcta. Cada celda debe contener
una respuesta. Si usted desea modificar una respuesta, arrástrela a otra ubicación, o haga clic en
Restablecer para que la evaluación regrese a su configuración inicial.

Una vez que haya finalizado el cuestionario, haga clic en Check (verificar). Las respuestas correctas
tendrán un fondo azul y las respuestas incorrectas estarán tachadas. Si desea intentar de nuevo,
haga clic en Restablecer. Nota: Si tiene problemas para que la evaluación funcione por segunda vez,
intente actualizar el explorador. Haga clic en Mostrar Solución para ver todas las respuestas
correctas.

Descripción Estado

El proceso se detuvo (se suspendió). T

El proceso ha liberado todos sus recursos, a excepción de su identificador de


Z
proceso.

El proceso se está ejecutando o está esperando para ejecutarse en una CPU. R

El proceso está en espera hasta que se cumpla alguna condición. S

El proceso está esperando E/S o que se cumpla alguna condición y no debe


D
responder a las señales.
7.3 Control de trabajos

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:

 Explicar los términos "primer plano", "segundo plano" y "terminal de control".

 Utilizar el control de trabajos para administrar múltiples tareas de la línea de comandos.

Control de trabajos

Control de trabajos es una característica de la shell que permite ejecutar y administrar múltiples
comandos desde una sola instancia de shell.

Un trabajo está asociado con cada tubería ingresada en un shell prompt. Todos los procesos en
esa tubería son parte del trabajo y son miembros del mismo grupo de procesos. (Si se ingresa solo
un comando en un shell prompt, puede considerarse como una "tubería" mínima de un comando.
Ese comando sería el único miembro de ese trabajo).

Solo un trabajo puede leer entradas y señales generadas por el teclado desde una ventana de
terminal específica por vez. Los procesos que son parte de ese trabajo son procesos en primer
planode dicha terminal de control.

Un proceso en segundo plano de dicha terminal de control es un miembro de cualquier otro


trabajo asociado con esa terminal. Los procesos en segundo plano de una terminal no pueden leer
entradas ni recibir interrupciones generadas por el teclado desde la terminal, pero pueden escribir
en la terminal. Un trabajo en segundo plano puede detenerse (suspenderse) o puede estar
ejecutándose. Si un trabajo que se está ejecutando en segundo plano intenta leer desde la
terminal, se suspenderá automáticamente.

Cada terminal es su propia sesión, y puede tener un proceso en primer plano y procesos en
segundo plano independientes. Un trabajo es parte de exactamente una sesión, la que pertenece
a su terminal de control.

El comando ps mostrará el nombre del dispositivo de la terminal de control de un proceso en la


columna TTY. Algunos procesos, como demonios del sistema, son iniciados por el sistema y no
desde un shell prompt. Estos procesos no tienen una terminal de control, no son miembros de un
trabajo y no pueden colocarse en primer plano. El comando ps mostrará un signo de interrogación
(?) en la columna TTY para estos procesos.

Realización de trabajos en segundo plano

Cualquier comando o tubería puede iniciarse en segundo plano si se anexa el signo ampersand (&)
al final de la línea de comandos. La shell bash muestra un número de trabajo (exclusivo de la
sesión) y el identificador de proceso del proceso secundario nuevo. La shell no espera al proceso
secundario y vuelve a mostrar el shell prompt.
[student@serverX ~]$ sleep 10000 &
[1] 5947
[student@serverX ~]$
nota

Cuando se coloca una tubería en segundo plano con un signo ampersand, el identificador de
proceso del último comando en la tubería será el de salida. Todos los procesos de la tubería
continúan siendo miembros de ese trabajo.
[student@serverX ~]$ example_command | sort | mail -s "Sort output" &
[1] 5998

La shell bash realiza un seguimiento de trabajos, por sesión, en una tabla que se muestra con el
comando jobs.
[student@serverX ~]$ jobs
[1]+ Running sleep 10000 &
[student@serverX ~]$

Un trabajo en segundo plano se puede colocar en primer plano con el comando fg con su ID de
trabajo (%número de trabajo).
[student@serverX ~]$ fg %1
sleep 10000
_

En el ejemplo anterior, el comando sleep se está ejecutando en primer plano en la terminal de


control. La shell se encuentra nuevamente en espera de que exista el proceso secundario.

Para enviar un proceso en primer plano a segundo plano, presione primero la solicitud de
suspensión generada por el teclado (Ctrl+z) en la terminal.
sleep 10000
^Z
[1]+ Stopped sleep 10000
[student@serverX ~]$

El trabajo se colocará inmediatamente en segundo plano y se suspenderá.

El comando ps j mostrará información relacionada con los trabajos. La PGID es el identificador de


proceso del líder del grupo de procesos, generalmente el primer proceso en la tubería del trabajo.
La SID es el identificador de proceso del líder de sesión, que para un trabajo es generalmente la
shell interactiva que se está ejecutando en su terminal de control. Dado que el comando sleep de
ejemplo está suspendido actualmente, su estado de proceso es T.
[student@serverX ~]$ ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
2764 2768 2768 2768 pts/0 6377 Ss 1000 0:00 /bin/bash
2768 5947 5947 2768 pts/0 6377 T 1000 0:00 sleep 10000
2768 6377 6377 2768 pts/0 6377 R+ 1000 0:00 ps j
[student@serverX ~]$

Para iniciar el proceso suspendido que se está ejecutando en segundo plano, utilice el comando bg
con la misma ID de trabajo.
[student@serverX ~]$ bg %1
[1]+ sleep 10000 &
[student@serverX ~]$
La shell emitirá una advertencia al usuario que intente salir de una ventana de terminal (sesión)
con trabajos suspendidos. Si el usuario vuelve a intentar salir de inmediato, los trabajos
suspendidos se anulan.

Referencias

Es posible encontrar información adicional en el capítulo sobre visualización de procesos de


sistemas en la Guía del administrador del sistema Red Hat Enterprise Linux para Red Hat Enterprise
Linux 7, que se puede encontrar en https://access.redhat.com/documentation/

Página de información de bash (Manual de referencia de BASH para GNU)

 Sección 7: Control de trabajos

Página de información libc (Manual de referencias de la biblioteca GNU C)

 Sección 24: Manejo de señales

 Sección 26: Procesos

páginas de manual bash(1), builtins(1), ps(1), sleep(1)


7.4 Práctica: Procesos de primer y segundo plano

En este ejercicio de laboratorio, los estudiantes iniciarán, suspenderán y se reconectarán a varios


procesos con el control de trabajo.

Resultados:
Práctica de suspensión y reinicio de procesos de usuario

Inicie sesión como student en serverX. Comience en el directorio de inicio del estudiante.

1. Abra las dos ventanas de terminal, una al lado de la otra, para que puedan identificarse
como izquierda y derecha.

2. En la ventana izquierda, inicie un proceso que anexe constantemente la palabra "rock" y


un espacio en el archivo ~/outfile con intervalos de un segundo. El conjunto del comando
completo debe estar entre paréntesis para que el control de trabajo interprete al conjunto
como un trabajo individual.
[student@serverX ~]$ (while true; do echo -n "rock " >> ~/outfile; sleep 1; done)

3. En la ventana derecha, use tail para confirmar que el proceso nuevo se escriba en el
archivo.
[student@serverX ~]$ tail -f ~/outfile

4. En la ventana izquierda, suspenda el procesos que está en ejecución. La shell devuelve la


ID de trabajo entre corchetes. En la ventana derecha, confirme que se haya detenido la
salida del proceso.
[student@serverX ~]$ Ctrl+z

5. En la ventana izquierda, visualice la lista de trabajos. El + indica el trabajo vigente. Reinicie


el trabajo en segundo plano. En la ventana derecha, confirme que la salida del proceso
esté de nuevo activa.
[student@serverX ~]$ jobs
[1]+ Stopped ( while true; do
echo -n "rock " >> ~/outfile; sleep 1;
done )
[student@serverX ~]$ bg
[student@serverX ~]$ jobs

6. En la ventana izquierda, inicie dos o más procesos para adjuntar el mismo archivo de
salida. Reemplace "rock" por "paper" y, a continuación, por "scissors". Para que el proceso
esté en segundo plano en forma correcta, el conjunto de comando completo debe estar
entre paréntesis y debe finalizar con el signo "&".
[student@serverX ~]$ (while true; do echo -n "paper " >> ~/outfile; sleep 1; done) &
[student@serverX ~]$ (while true; do echo -n "scissors " >> ~/outfile; sleep 1; done) &
7. En la ventana izquierda, visualice los trabajos para ver los tres procesos que están en
"ejecución". En la ventana derecha, confirme que los tres procesos se estén adjuntando al
archivo.
[student@serverX ~]$ jobs

8. Use solo los comandos que aprendió anteriormente y suspenda el proceso "rock". En la
ventana izquierda, coloque en primer plano el trabajo, usando la ID de trabajo
determinada de la lista de trabajos y, luego, utilice Ctrl+z para suspenderlo. Confirme que
se haya detenido el proceso de "rock". En la ventana derecha, confirme que la salida de
"rock" ya no esté activa.
[student@serverX ~]$ jobs
[student@serverX ~]$ fg %number
[student@serverX ~]$ Ctrl+z

9. Finalice el proceso de "paper". En la ventana izquierda, coloque en primer plano el trabajo


y, luego, utilice Ctrl+c para finalizarlo. Confirme que el proceso de "paper" haya
desaparecido. En la ventana derecha, confirme que la salida de "output" ya no esté activa.
[student@serverX ~]$ jobs
[student@serverX ~]$ fg %number
[student@serverX ~]$ Ctrl+c

10. En la ventana izquierda, visualice el resto de los trabajos que usan ps. El trabajo
suspendido tiene el estado T. El otro trabajo que está en segundo plano está inactivo (S)
ya que ps está "en cpu" (R) mientras se muestra.
[student@serverX ~]$ ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
4489 6223 6223 6223 pts/1 12918 Ss 1000 0:00 bash
4489 6237 6237 6237 pts/2 9782 Ss 1000 0:00 bash
6237 9782 9782 6237 pts/2 9782 S+ 1000 0:00 tail -f /home/student/o
7360 9856 7360 6223 pts/1 12918 T 1000 0:00 sleep 1
7395 12916 7395 6223 pts/1 12918 S 1000 0:00 sleep 1
6223 12918 12918 6223 pts/1 12918 R+ 1000 0:00 ps j

11. Detenga los dos trabajos restantes. En la ventana de la izquierda, coloque en primer plano
cualquier trabajo. Utilice Ctrl+c para finalizarlo. Repita con el trabajo restante. El trabajo
"detenido" provisoriamente se reinicia cuando pasa a primer plano. Confirme que no
queden trabajos y que se haya detenido la salida.
[student@serverX ~]$ fg %number
[student@serverX ~]$ Ctrl+c
[student@serverX ~]$ fg %number
[student@serverX ~]$ Ctrl+c
[student@serverX ~]$ jobs

12. En la ventana derecha, detenga el comando tail. Cierre las ventanas de terminal extra.
[student@serverX ~]$ Ctrl+c
7.5 Finalización de procesos

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:

 Usar comandos para finalizar procesos y comunicarse con ellos.

 Definir las características de un proceso demonio.

 Terminar sesiones y procesos de usuario.

Finalización de procesos

Una señal es la interrupción de software que se envía a un proceso. Indica eventos de informe a
un programa que está en ejecución. Los eventos que generan una señal pueden ser un error,
evento externo (por ejemplo, una solicitud de entrada o salida, o un temporizador vencido), o una
solicitud explícita (por ejemplo, el uso de un comando emisor de señal o secuencia de teclado).

La siguiente tabla enumera las señales fundamentales usadas por los administradores del sistema
para la administración de procesos de rutina. Puede referirse a las señales ya sea por su nombre
abreviado (HUP) o nombre propio (SIGHUP).
Señales fundamentales de administración de procesos

Número Nombre
Definición Propósito
de señal abreviado

Se usa para informar la finalización del


proceso de control de una terminal.
1 HUP Colgar Además, se utiliza para solicitar que se
reinicie el proceso (volver a cargar la
configuración) sin finalización.

Provoca la finalización del programa.


Interrupción Puede bloquearse o manipularse. Enviado
2 INT
del teclado al presionar una combinación de teclas
INTR (Ctrl+c).

Es similar a SIGINT, pero también provoca


Salida del el volcado de un proceso en la
3 QUIT
teclado finalización. Enviado al presionar una
combinación de teclas QUIT(Ctrl+\).

Finalización, no Provoca la finalización abrupta del


9 KILL se puede programa. No se puede bloquear, ignorar
bloquear. ni manipular; siempre es grave.

Provoca la finalización del programa. A


15 diferencia de SIGKILL, puede bloquearse,
TERM Terminar ignorarse o manipularse. Es la manera
default correcta de solicitar la finalización de un
programa; hace posible la autolimpieza.

Se envía a un proceso para que se


reinicie, en caso de que esté detenido. No
18 CONT Continuar
puede bloquearse. Aún si se manipula,
siempre reinicia el proceso

Detener, no se
Suspende el proceso. No puede
19 STOP puede
bloquearse ni manipularse.
bloquear.

A diferencia de SIGSTOP, puede


Detención del bloquearse, ignorarse o manipularse.
20 TSTP
teclado Enviado al presionar una combinación de
teclas SUSP (Ctrl+z).
nota

Los números de señal varían en las distintas plataformas de hardware de Linux, pero los nombres y
los significados de las señales están estandarizados. Para el uso del comando, se aconseja usar los
nombres de señal en lugar de los números. Los números analizados en esta sección son para los
sistemas Intel x86.

Cada señal tiene una acción predeterminada que, por lo general, es una de las siguientes:

Term: provoca que un programa finalice (se cierre) de una vez.

Core: provoca que un programa guarde una imagen de la memoria (volcado central) y que,
a continuación, finalice.

Stop: provoca que un programa deje de ejecutarse (se suspenda) y espere para continuar
(se reinicie).

Los programas pueden estar preparados para señales de eventos esperadas mediante la
implementación de rutinas de controlador que ignoren, reemplacen o amplíen la acción
predeterminada de una señal.

Comandos para el envío de señales mediante una solicitud explícita


Los usuarios indican el proceso en primer plano actual mediante la escritura de una secuencia de
control de teclado para suspender (Ctrl+z), finalizar (Ctrl+c) o realizar un volcado central (Ctrl+\)
del proceso. Para indicar un proceso o procesos en primer plano en una sesión diferente, se
requiere de un comando emisor de señal.

Las señales pueden especificarse ya sea por nombre (e.g., -HUP o -SIGHUP) o número (e.g., -1). Los
usuarios pueden finalizar sus propios procesos, pero se necesitan privilegios de root para finalizar
procesos que son propiedad de otros usuarios.

 El comando kill envía una señal a un proceso mediante una ID. A pesar de su nombre, el
comando kill puede usarse para enviar cualquier señal y no solo aquellas para finalizar
programas.
[student@serverX ~]$ kill PID
[student@serverX ~]$ kill -signal PID
[student@serverX ~]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
-- salida truncada --

 Use la opción killall para enviar una señal a uno o más procesos que coincidan con los
criterios de selección, como un nombre de comando, procesos que sean propiedad de un
usuario específico o procesos de todo el sistema.
[student@serverX ~]$ killall command_pattern
[student@serverX ~]$ killall -signal command_pattern
[root@serverX ~]# killall -signal -u username command_pattern
 El comando pkill, como killall, puede indicar varios procesos. El comando pkill usa criterios
de selección avanzados, que pueden incluir la combinación de:

Command: procesos con un nombre de comando que coincide con un patrón.

UID: procesos que son propiedad de una cuenta de usuario de Linux, efectiva o
real.

GID: procesos que son propiedad de una cuenta de grupo de usuarios de Linux,
efectiva o real.

Parent: procesos secundarios de un proceso principal específico.

Terminal: procesos que se ejecutan en una terminal de control específica.

[student@serverX ~]$ pkill command_pattern


[student@serverX ~]$ pkill -signal command_pattern
[root@serverX ~]# pkill -G GID command_pattern
[root@serverX ~]# pkill -P PPID command_pattern
[root@serverX ~]# pkill -t terminal_name -U UID command_pattern

Cierre de sesión de usuarios en forma administrativa

El comando w visualiza los usuarios que actualmente tienen una sesión iniciada en el sistema y sus
actividades acumuladas. Use las columnas TTY y FROM para determinar la ubicación del usuario.

Todos los usuarios tienen una terminal de control, que se enumera como pts/N mientras se
trabaja en una ventana de entorno gráfico (pseudo-terminal) o ttyN en una consola del sistema,
una consola alternativa o un dispositivo terminal conectado en forma directa. Los usuarios
remotos muestran su nombre de sistema de conexión en la columna FROM cuando usan la opción
-f.
[student@serverX ~]$ w -f
12:43:06 up 27 min, 5 users, load average: 0.03, 0.17, 0.66
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
student :0 :0 12:20 ?xdm? 1:10 0.16s gdm-session-wor
student pts/0 :0 12:20 2.00s 0.08s 0.01s w -f
root tty2 12:26 14:58 0.04s 0.04s -bash
bob tty3 12:28 14:42 0.02s 0.02s -bash
student pts/1 desktop2.example.12:41 1:07 0.03s 0.03s -bash
[student@serverX ~]$

Averigüe cuánto tiempo un usuario estuvo en el sistema con la hora de inicio de sesión. Para cada
sesión, los recursos de CPU consumidos por los trabajos actuales, incluidas las tareas en segundo
plano y los procesos secundarios, se encuentran en la columna JCPU. El consumo de CPU del
proceso de primer plano actual está en la columna PCPU.

Los usuarios pueden ser obligados a salir del sistema debido a infracciones contra la seguridad,
asignación excesiva de recursos o necesidades administrativas. Se espera que los usuarios salgan
de las aplicaciones innecesarias, cierren los intérpretes de comandos no usados y salgan de las
sesiones de inicio de sesión cuando se les solicite.

En caso de que se produzcan situaciones en que no es posible comunicarse con los usuarios o
tienen sesiones sin respuesta, consumo de recursos descontrolado o acceso al sistema
inadecuado, es probable que sus sesiones deban finalizarse en forma administrativa con las
señalizaciones.

Importante

A pesar de que SIGTERM es la señal predeterminada, SIGKILL es el administrador preferido más


usado en forma errónea. Ya que la señal SIGKILL no puede manipularse ni ignorarse, siempre es
grave. Sin embargo, obliga a la finalización sin permitir que el proceso terminado ejecute rutinas
de autolimpieza. Se recomienda enviar primero SIGTERM y, a continuación, recuperar con
SIGKILLsolo si falla un proceso en la respuesta.

Los procesos y las sesiones pueden señalizarse en forma individual o colectiva. Para finalizar todos
los procesos de un usuario, use el comando pkill. Debido a que el proceso inicial en una sesión de
inicio de sesión (líder de sesión) está diseñado para manipular las solicitudes de finalización de
sesión e ignorar las señales de teclado involuntarias, la finalización de todos los procesos e
intérpretes de comandos de inicio de sesión de un usuario requiere del uso de la señal SIGKILL.
[root@serverX ~]# pgrep -l -u bob
6964 bash
6998 sleep
6999 sleep
7000 sleep
[root@serverX ~]# pkill -SIGKILL -u bob
[root@serverX ~]# pgrep -l -u bob
[root@serverX ~]#

Cuando los procesos que requieren atención están en la misma sesión de inicio de sesión, es
probable que no sea necesario finalizar todos los procesos de un usuario. Determine la terminal de
control para la sesión con el comando w y, a continuación, finalice solo los procesos con hagan
referencia a la misma ID de terminal. A menos que se especifique SIGKILL, el líder de sesión (en
este caso, la shell de inicio de sesión bash) manipula y supera en forma correcta la solicitud de
finalización, pero finalizan todos los demás procesos de sesión.
[root@serverX ~]# pgrep -l -u bob
7391 bash
7426 sleep
7427 sleep
7428 sleep
[root@serverX ~]# w -h -u bob
bob tty3 18:37 5:04 0.03s 0.03s -bash
[root@serverX ~]# pkill -t tty3
[root@serverX ~]# pgrep -l -u bob
7391 bash
[root@serverX ~]# pkill -SIGKILL -t tty3
[root@serverX ~]# pgrep -l -u bob
[root@serverX ~]#
Puede aplicarse el mismo proceso selectivo de finalización con las relaciones de proceso principal
y secundario. Use el comando pstree para visualizar un árbol de proceso para el sistema o un solo
usuario. Use la PID del proceso principal para finalizar todos los procesos secundarios que haya
creado. Esta vez, la shell de inicio de sesión bash principal sobrevive porque la señal se dirige solo
a sus procesos secundarios.
[root@serverX ~]# pstree -p bob
bash(8391)─┬─sleep(8425)
├─sleep(8426)
└─sleep(8427)
[root@serverX ~]# pkill -P 8391
[root@serverX ~]# pgrep -l -u bob
bash(8391)
[root@serverX ~]# pkill -SIGKILL -P 8391
[root@serverX ~]# pgrep -l -u bob
bash(8391)
[root@serverX ~]#

Referencias

info libc signal (Manual de referencias de la biblioteca GNU C)

 Sección 24: Manejo de señales

info libc processes (Manual de referencias de la biblioteca GNU C)

 Sección 26: Procesos

Páginas de manual kill(1), killall(1), pgrep(1), pkill(1), pstree(1), signal(7) y w(1)


7.6 Práctica: Finalización de procesos

En este ejercicio de laboratorio, los estudiantes usarán secuencias del teclado y señales para
administrar y detener procesos.

Resultados:
Experiencia con la observación de resultados de iniciar y detener varios procesos de shell.

Inicie sesión como student en serverX. Comience en su directorio de inicio.

1. Abra dos ventanas de terminal, una al lado de la otra, para que puedan identificarse como
izquierda y derecha.

2. En la ventana izquierda, inicie tres procesos que adjunten texto de un archivo de salida en
intervalos de un segundo. Para que cada proceso esté en segundo plano en forma
correcta, el conjunto completo del comando debe estar entre paréntesis y finalizar con un
"&".
[student@serverX ~]$ (while true; do echo -n "game " >> ~/outfile; sleep 1; done) &
[student@serverX ~]$ (while true; do echo -n "set " >> ~/outfile; sleep 1; done) &
[student@serverX ~]$ (while true; do echo -n "match " >> ~/outfile; sleep 1; done) &

3. En la ventana derecha, use tail para confirmar que los tres procesos se adjunten al
archivo. En la ventana izquierda, visualice los trabajos para ver los tres procesos que están
en "ejecución".
[student@serverX ~]$ tail -f ~/outfile
[student@serverX ~]$ jobs
[1] Running ( while true; do
echo -n "game " >> ~/outfile; sleep 1;
done ) &
[2]- Running ( while true; do
echo -n "set " >> ~/outfile; sleep 1;
done ) &
[3]+ Running ( while true; do
echo -n "match " >> ~/outfile; sleep 1;
done ) &

4. Use las señales para suspender el proceso de "games". Confirme que se haya detenido el
proceso de "games". En la ventana derecha, confirme que la salida de "games" ya no esté
activa.
[student@serverX ~]$ kill -SIGSTOP %number
[student@serverX ~]$ jobs

5. Use las señales para finalizar el proceso de "set". Confirme que el proceso de "set" haya
desaparecido. En la ventana derecha, confirme que la salida de "set" ya no esté activa.
[student@serverX ~]$ kill -SIGTERM %number
[student@serverX ~]$ jobs

6. Use las señales para reanudar el proceso de "games". Confirme que el proceso de "games"
esté en ejecución. En la ventana derecha, confirme que la salida de "games" esté de nuevo
activa.
[student@serverX ~]$ kill -SIGCONT %number
[student@serverX ~]$ jobs

7. Finalice los dos trabajos restantes. Confirme que no queden trabajos y que se haya
detenido la salida. En la ventana izquierda, finalice el comando tail en la ventana derecha.

Cierre las ventanas de terminal extra.


[student@serverX ~]$ kill -SIGTERM %number
[student@serverX ~]$ kill -SIGTERM %number
[student@serverX ~]$ jobs
[student@serverX ~]$ pkill -SIGTERM tail
[student@serverX ~]$
7.7 Monitoreo de la actividad de procesos

Objetivos

Tras finalizar esta sección, los estudiantes deberían poder realizar lo siguiente:

 Interpretar promedio de tiempo activo y de carga.

 Monitorear los procesos en tiempo real.

Monitoreo de la actividad de procesos

El núcleo Linux calcula una métrica de promedio de carga como un promedio en movimiento
exponencial del número de carga, un conteo acumulativo de la CPU de solicitudes activas de
recursos del sistema.

 Las solicitudes activas se cuentan desde las filas por CPU para subprocesos en ejecución y
subprocesos en espera de E/S, ya que el núcleo realiza el seguimiento de la actividad de
los recursos del proceso y los cambios de estado del proceso correspondiente.

 El número de carga es un cálculo de rutina que se ejecuta cada cinco segundos de manera
predeterminada, que almacena y promedia las solicitudes activas en un número único
para todas las CPU.

 El promedio en movimiento exponencial es una fórmula matemática para emparejar los


extremos de los datos de tendencia, aumentar la importancia de la actividad actual y
disminuir la calidad de los datos antiguos.

 El promedio de carga es el resultado del cálculo de rutina del número de carga. En


conjunto, se refiere a los tres valores que se muestran de la actividad del sistema,
promedios de los últimos 1, 5 y 15 minutos.

Comprensión del cálculo del promedio de carga Linux


El promedio de carga representa la carga del sistema percibida durante un período. Linux
implementa el cálculo del promedio de carga como una representación de los tiempos de espera
de servicio esperados, no solo de la CPU, sino también de E/S del disco y de la red.

 Linux cuenta los procesos, y también los subprocesos individualmente, como tareas
separadas. Las filas de solicitudes de la CPU para subprocesos en ejecución (nr_running) y
subprocesos en espera de recursos de E/S (nr_iowait) lógicamente corresponden a
estados de procesos R (Ejecución) y D (Suspensión ininterrumpida). La espera de E/S
incluye la suspensión de tareas para las respuestas esperadas del disco y de la red.

 El número de carga es un cálculo de conteo global, que totaliza la suma para todas las
CPU. Dado que las tareas que se retoman luego de una suspensión se pueden reprogramar
para distintas CPU, los conteos precisos por CPU son difíciles, pero se puede garantizar un
conteo acumulativo preciso. Los promedios de carga que se muestran representan a todas
las CPU.

 Linux cuenta cada hiperproceso del núcleo físico de una CPU y microprocesador como
unidades de ejecución separadas, representadas lógicamente y tratadas como CPU
individuales. Cada CPU tiene filas de solicitudes independientes. Vista de /proc/cpuinfo
para la representación del núcleo de las CPU del sistema.
[student@serverX ~]$ grep "model name" /proc/cpuinfo
model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
model name : Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
[student@serverX ~]$ grep "model name" /proc/cpuinfo | wc -l
4

 Algunos sistemas UNIX solo tenían en cuenta la utilización de la CPU o la longitud de la fila
de ejecución para indicar la carga del sistema. Dado que un sistema con CPU inactivas
puede experimentar esperas excesivas debido a que el disco o los recursos están
ocupados, en el promedio de carga de Linux se tiene en consideración la E/S. Cuando haya
promedios altos de carga con actividad mínima de CPU, se debe examinar la actividad del
disco y de la red.

Interpretación de los valores que se muestran del promedio de carga


Los tres valores representan los valores calculados durante los últimos 1, 5 y 15 minutos. Una
rápida mirada puede indicar si la carga del sistema parece estar subiendo o bajando. Calcular el
valor de carga aproximado por CPU para determinar si el sistema está experimentando una espera
significativa.

 top, uptime, w y gnome-system-monitor muestran valores promedios de carga.

[student@serverX ~]$ uptime


15:29:03 up 14 min, 2 users, load average: 2.92, 4.48, 5.20

 Dividir los valores promedios de carga que se muestran por el número de CPU lógicas en el
sistema. Un valor por debajo de 1 indica utilización de recursos satisfactoria y tiempos de
espera mínimos. Un valor por encima de 1 indica saturación de recursos y cierta cantidad
de tiempo de espera del servicio.
# From /proc/cpuinfo, system has four logical CPUs, so divide by 4:
# load average: 2.92, 4.48, 5.20
# divide by number of logical CPUs: 4 4 4
# ---- ---- ----
# per-CPU load average: 0.73 1.12 1.30
#
# This system's load average appears to be decreasing.
# With a load average of 2.92 on four CPUs, all CPUs were in use ~73% of the time.
# During the last 5 minutes, the system was overloaded by ~12%.
# During the last 15 minutes, the system was overloaded by ~30%.

 Una fila de una CPU inactiva tiene número de carga 0. Cada subproceso listo y en espera
incrementa el contador en 1. Con un contador de fila total de 1, el recurso (CPU, disco o
red) está en uso, pero sin solicitudes en espera. Las solicitudes adicionales incrementan el
contador; sin embargo, como muchas solicitudes se pueden procesar en el período,
aumenta la utilizacióndel recurso, pero no los tiempos de espera.
 Los procesos en suspensión para E/S debido a un disco o recurso de red ocupados se
incluyen en el contador y aumentan el promedio de carga. Mientras no haya una
indicación de utilización de la CPU, el contador de la fila continúa indicando que los
usuarios y programas están esperando los servicios del recurso.

 Hasta que no se produce una saturación del recurso, un promedio de carga se mantendrá
por debajo de 1, dado que las tareas rara vez son encontradas en las filas de espera. El
promedio de carga solo aumenta cuando la saturación del recurso provoca que las
solicitudes se mantengan en fila y sean contadas por la rutina del cálculo de carga. Cuando
la utilización del recurso se aproxima al 100  %, cada solicitud adicional comienza a
experimentar un tiempo de espera del servicio.

Monitoreo del proceso en tiempo real

El programa top es una vista dinámica de los procesos del sistema, que muestra un encabezado
del resumen seguido de un proceso o lista de subprocesos similares a la información de ps. A
diferencia del resultado estático de ps, top continuamente se actualiza a un intervalo configurable
y ofrece capacidades de reorganización, ordenado y resaltado de columnas. Las configuraciones
del usuario se pueden guardar y hacer persistentes.

Las columnas de resultados predeterminadas se diferencian de otras herramientas de recursos en:

 El ID del proceso (PID).

 El nombre de usuario (USER) es el propietario del proceso.

 La memoria virtual (VIRT) es toda la memoria que está utilizando el proceso, incluido el
conjunto residente, las bibliotecas compartidas y cualquier página de memoria asignada o
intercambiada. (Con la etiqueta VSZ en el comando ps).

 La memoria residente (RES) es la memoria física que utiliza el proceso, incluido cualquier
objeto residente compartido. (Con la etiqueta RSS en el comando ps).

 El estado del proceso (S) se muestra como:

o D = Suspensión ininterrumpida

o R = En ejecución o ejecutable

o S = En suspensión

o T = Detenido o en seguimiento

o Z = Inerte

 El tiempo de CPU (TIME) es el tiempo total de procesamiento desde que comenzó el


proceso. Se puede alternar para incluir el tiempo acumulativo de todos los procesos
secundarios.

 El nombre del comando de proceso (COMMAND).


Pulsaciones de tecla fundamentales en top

Tecla Propósito

?oh Ayudar en pulsaciones de tecla interactiva.

l, t,
Alternar entre carga, subprocesos y líneas de encabezado de la memoria.
m

Alternar mostrando CPU individuales o un resumen de todas las CPU en el


1
encabezado.

Cambiar la tasa de actualización (pantalla), en segundos decimales (p. ej., 0.5,


s (1)
1, 5).

Alternar resaltado reverso para procesos en ejecución Running; solo negrita de


b
manera predeterminada.

Permite el uso de negrita en lo visualizado, en el encabezado y en los procesos


B
en ejecución Running.

Alternar subprocesos; mostrar resumen del proceso o subprocesos


H
individuales.

u, U Filtrar por cualquier nombre de usuario (eficaz, real).

M Ordenar procesos enumerados por uso de memoria, en orden decreciente.

Ordenar procesos enumerados por utilización del procesador, en orden


P
decreciente.

k (1) Eliminar un proceso. Cuando recibe un aviso, ingresar PID, luego signal.

r (1) Renice a un proceso. Cuando recibe un aviso, ingresar PID, luego nice_value.

Escribir (guardar) la configuración actual de lo mostrado para usarse en el


W
próximo reinicio de top.

q Salir.

(1)
Nota: No está disponible si top se inicia en modo seguro. Ver top(1).

Referencias

Monitor del Sistema GNOME


 yelp help:gnome-system-monitor, Páginas de manual ps(1), top(1), uptime(1), y w(1).

7.8 Práctica: Control de la actividad de proceso

En este ejercicio de laboratorio, los estudiantes usarán el comando top para visualizar, clasificar y
detener procesos en forma dinámica.

Resultados
Practicar la administración de procesos en tiempo real.

Realice las siguientes tareas como student en la máquina que tiene instalado serverX. Ejecute lab
process101 setup en serverX a fin de prepararse para este ejercicio.
[student@serverX ~]$ lab process101 setup

1. Abra dos ventanas de terminal, una al lado de la otra, para que puedan identificarse como
izquierda y derecha. En la terminal derecha, ejecute la utilidad top. Modifique el tamaño
de la ventana para que sea lo más alta posible.
[student@serverX ~]$ top

2. En la terminal izquierda, determine la cantidad de CPU lógicas de esta máquina virtual.


[student@serverX ~]$ grep "model name" /proc/cpuinfo | wc -l
1

3. En la terminal izquierda, ejecute una sola instancia del process101 ejecutable.


[student@serverX ~]$ process101

4. En la terminal derecha, observe la pantalla de top. Presione las teclas l, t y m en forma


individual para alternar la carga, los subprocesos y las líneas del encabezado de memoria.
Después de observar este comportamiento, asegúrese de que se muestren todos los
encabezados.

5. Anote la ID de proceso (PID) para process101. Observe el porcentaje de CPU para el


proceso, que se espera que sea alrededor del 25 % o el 30 %.

Observe los promedios de carga. Por ejemplo, en una máquina virtual de una sola CPU, el
promedio de carga de un minuto actualmente es inferior al valor de 1. El valor observado puede
estar afectado por la contención del recurso desde otra máquina virtual o el host virtual.

6. En la terminal izquierda, ejecute una segunda instancia del process101.


[student@serverX ~]$ process101

7. En top, anote la ID de proceso (PID) para el segundo process101. Observe el porcentaje de


CPU para el proceso, que también se espera que sea alrededor del 25 % o el 30 %.

Observe de nuevo el promedio de carga de un minuto, que todavía debería ser inferior a 1. Espere
un máximo de un minuto para permitir que el cálculo se adapte a la carga de trabajo nueva.

8. En la terminal izquierda, ejecute una tercera instancia del process101.


[student@serverX ~]$ process101
9. En top, anote la ID de proceso (PID) para el tercer process101. Observe el porcentaje de
CPU para el proceso; una vez más, se espera que sea alrededor del 25 % o el 30 %.

De nuevo, observe el promedio de carga de un minuto, que ahora debería ser superior a 1. Espere
un máximo de un minuto para permitir que el cálculo una vez más se adapte a la carga de trabajo
nueva.

10. Opcional: si esta máquina virtual tiene más de una CPU lógica, comience lentamente otras
instancias de process101 hasta que el promedio de carga de un minuto iguale o supere la
cantidad de CPU lógicas. Divida el valor del promedio de carga por la cantidad de CPU para
determinar el promedio de carga calculado por CPU.

11. Una vez que haya finalizado de observar los valores promedio de carga, finalice cada uno
de los procesos process101 desde top.

a. Presione k. Observe la petición que está debajo de los encabezados y arriba de las
columnas.

b. Escriba la PID para una de las instancias de process101. Presione Enter.

c. Presione Enter de nuevo para usar la señal SIGTERM predeterminada de 15.

Confirme que el proceso seleccionado ya no se observe en top. Si la PID no se modifica, repita


estos pasos de finalización, sustituya la señal SIGKILL 9 cuando se le solicite.

12. Repita el paso anterior para cada instancia de process101 restante. Confirme que no
quede ninguna instancia de process101 en top.

13. En la ventana derecha, presione q para salir de top. Cierre las ventanas de terminal extra.
7.9 Ejercicio de laboratorio: Monitoreo y administración de procesos de Linux

En este ejercicio de laboratorio, los estudiantes localizarán y administrarán los procesos que
utilizan la mayoría de los recursos en un sistema.

Resultados
Experiencia con el uso de top como herramienta de administración de procesos.

Ejecute lab processes setup como usuario root en serverX a fin de prepararse para este ejercicio.
[root@serverX ~]# lab processes setup

Realice las siguientes tareas como usuario student en la máquina serverX.

1. En una ventana de terminal, ejecute la utilidad top. Modifique el tamaño de la ventana


para que sea lo más alta posible.

[student@serverX ~]$ top


top - 12:47:46 up 2:02, 3 users, load average: 1.67, 1.25, 0.73
Tasks: 361 total, 6 running, 355 sleeping, 0 stopped, 0 zombie
%Cpu(s): 98.5 us, 1.4 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 2043424 total, 897112 used, 1146312 free, 1740 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 296276 cached Me

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


4019 root 20 0 4156 76 0 R 57.5 0.0 2:54.15 hippo
2492 student 20 0 1359500 168420 37492 S 16.8 8.2 3:55.58 gnome-shell
1938 root 20 0 189648 35972 7568 R 1.9 1.8 0:29.66 Xorg
2761 student 20 0 620192 19688 12296 S 0.4 1.0 0:04.48 gnome-termi+
salida truncada

2. Observe la pantalla top. La pantalla predeterminada ordena los resultados por utilización
de la CPU (de mayor a menor). ¿Qué procesos están utilizando la mayoría del tiempo de la
CPU?

Aparte de la shell GNOME predeterminada, busque el proceso con el nombre hippo.


3. Cambie la pantalla para ordenar el contenido por cantidad de memoria que utiliza cada
proceso.

Presione M.
top - 12:57:38 up 2:11, 3 users, load average: 2.09, 1.70, 1.19
Tasks: 360 total, 5 running, 355 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.8 us, 0.2 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 2043424 total, 896952 used, 1146472 free, 1740 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 296280 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


2492 student 20 0 1359500 168420 37492 S 0.5 8.2 4:01.04 gnome-shell
4013 root 20 0 55360 51208 152 S 0.0 2.5 0:00.43 elephant
1938 root 20 0 189648 35972 7568 R 0.2 1.8 0:30.49 Xorg
2576 student 20 0 533752 33684 27784 S 0.1 1.6 0:09.29 vmtoolsd
2420 student 20 0 916268 25616 14404 S 0.0 1.3 0:00.61 gnome-setti+
2550 student 20 0 1048204 23136 16060 S 0.0 1.1 0:00.46 nautilus
salida truncada

4. ¿Qué procesos tienen las asignaciones de memoria más grandes?

Aparte de la shell GNOME predeterminada y de Xorg, busque un proceso con el nombre elephant.

5. Desactive el uso de negrita en la pantalla. Guarde esta configuración para volver a


utilizarla cuando se reinicie top.

Presione la tecla B mayúscula para desactivar el uso de negrita.

Presione la tecla W mayúscula para guardar esta configuración. El archivo de


configuración predeterminado es .toprc en el directorio de inicio del usuario actual.

6. Finalice top y vuelva a iniciarlo. Confirme que la nueva pantalla utilice la configuración
guardada; es decir, que la pantalla comience con el contenido ordenado por utilización de
memoria y con el uso de negrita desactivado.

Presione q para salir de la pantalla actual y luego vuelva a ejecutar top.


[student@serverX ~]$ top

7. Modifique la pantalla para que el contenido se ordene por utilización de la CPU una vez
más. Active el uso de negrita. Observe que solo las entradas de proceso Running o
Runnable(estado R) están en negrita. Guarde esta configuración.

Presione la tecla P mayúscula para ordenar el contenido por utilización de la CPU.

Presione la tecla B mayúscula para activar el uso de negrita.


Presione la tecla W mayúscula para guardar esta configuración.

8. Abra otra ventana de terminal si es necesario. Como usuario root, suspenda el proceso
hippo. En top, observe que el estado del proceso ahora es T.
[student@serverX ~]$ su -
Password: redhat
[root@serverX ~]# pkill -SIGSTOP hippo

9. El proceso hippo desaparece rápidamente de la pantalla porque ha dejado de usar


recursos de la CPU de manera activa. Incluya en una lista la información del proceso de la
línea de comandos para confirmar el estado del proceso.
[root@serverX ~]# ps -f $(pgrep hippo)

10. Reanude la ejecución de los procesos hippo.


[root@serverX ~]# pkill -SIGCONT hippo

11. Cuando termine de observar la pantalla, utilice la línea de comandos para finalizar los
procesos extras. Confirme que los procesos ya no se vean en top.
[root@serverX ~]# pkill elephant
[root@serverX ~]# pkill hippo

12. Verifique que la limpieza se realice correctamente; para ello, ejecute la secuencia de
comandos para calificar. De ser necesario, busque y termine los procesos incluidos en una
lista por la secuencia de comandos para calificar y repita dicha secuencia.
[root@serverX ~]# lab processes grade

13. Salga de la pantalla de top. Cierre las ventanas de terminal extra.

Presione q para salir.

También podría gustarte