Objetivo:
Comprender el sistema de prioridades de procesos en Linux (escala de -20 a 19), aprender a consultar y modificar el valor NI (Nice) mediante ps -efl, ps -o y el comando renice, analizar las restricciones de seguridad para usuarios no privilegiados, y dominar el monitoreo e interacción en tiempo real mediante el comando top (ordenación, filtrado de usuarios, vista en árbol, vistas gráficas y persistencia de configuración).
Escenario:
- Herramientas: Terminal de Linux en entorno gráfico o servidor.
- Conceptos clave: Tiempo compartido (time-sharing), valor Nice (
NI), prioridades de procesos (alta:-20, baja:19, estándar:0), reprogramación de prioridad conrenice, comandos de simulación comosleep, y monitorización interactiva avanzada contop.
Instrucciones:
Fase 1: Inspección del valor Nice (NI) de los procesos del sistema
- Abre la terminal de Linux.
- Ejecuta el listado detallado con formato largo para inspeccionar la columna de prioridad
NIen todos los procesos: - Observa la columna marcada como
NI. Identifica que los procesos del kernel/sistema suelen tener valores de prioridad alta (ej.-20) y que la mayoría de los procesos de usuario tienen prioridad estándar (0). Pulsaqpara salir.
ps -efl | less
Fase 2: Creación de un proceso en segundo plano y filtrado personalizado con ps -o
- Abre una segunda pestaña o ventana de terminal.
- Lanza un proceso que se detenga durante 1000 segundos para poder examinarlo con tranquilidad:
- Vuelve a la primera pestaña de la terminal.
- Consulta la presencia del comando
sleepy verifica su prioridad estándar actual medianteps -efl: - Anota el
PIDasignado al procesosleep(por ejemplo, 6437). - Utiliza la opción de formato personalizado de
ps(-o) para extraer únicamente el PID, el valor Nice (ni) y el comando ejecutado (comm): - Comprueba que el valor asignado en la columna
NIes0.
sleep 1000
ps -efl | grep sleep
ps -o pid,ni,comm | grep sleep
Fase 3: Modificación de prioridad con renice y restricciones de usuario
- Incrementa el valor Nice del proceso a
10(reduciendo su prioridad dentro del procesador): - Verifica que la consola confirma el cambio de la prioridad anterior (
0) a la nueva (10). - Comprueba el nuevo valor Nice volviendo a ejecutar la consulta personalizada de
ps: - Intenta ahora aumentar la prioridad del proceso asignándole un valor negativo (ej.
-5): - Observa el mensaje de error de la consola (Permission denied) y comprueba que un usuario sin privilegios de root no puede asignar prioridades negativas ni elevar la prioridad de un proceso (disminuir su valor Nice).
renice +10 -p [TU_PID_SLEEP]
ps -o pid,ni,comm | grep sleep
renice -5 -p [TU_PID_SLEEP]
Fase 4: Monitorización e interacción en tiempo real con el comando top
- Ejecuta el comando
toppara abrir la consola interactiva: - Examina el área de cabecera: resumen de
uptime, tareas (running, sleeping, stopped, zombie), porcentaje de uso de CPU, estado de la memoria RAM y estado del área de intercambio (swap). - Prueba las siguientes opciones de ordenación mediante combinaciones de teclado en directo:
- Pulsa
Shift + Ppara ordenar la lista por uso de CPU. - Pulsa
Shift + Mpara ordenar la lista por uso de memoria RAM. - Pulsa
Shift + Tpara ordenar por tiempo total de CPU acumulado. - Pulsa
cpara alternar entre mostrar la orden simple o la línea de comandos completa del proceso.
- Pulsa
- Filtra los procesos para visualizar únicamente los correspondientes a tu usuario pulsando la tecla
u, escribiendo tu nombre de usuario y presionandoEnter. - Alterna el formato de visualización a árbol jerárquico pulsando
Shift + V. - Personaliza los gráficos de la cabecera:
- Pulsa
lpara ocultar/mostrar la línea de uptime y carga media. - Pulsa
tvarias veces para alternar los modos de representación gráfica de la CPU (valores, barras, etc.). - Pulsa
mvarias veces para cambiar el diseño visual de la memoria RAM y SWAP.
- Pulsa
- Guarda la configuración personalizada de
toppulsandoShift + W. - Sal de
toppulsando la teclaq. - Ejecuta nuevamente
topy comprueba que la interfaz se inicia con el estilo personalizado que guardaste. Sal conq.
top
Preguntas de reflexión:
- ¿En qué rango numérico se definen las prioridades de procesos (valores Nice) en Linux y qué extremo representa la mayor prioridad?
- ¿Cuál es el valor Nice por defecto que asigna el sistema a los nuevos procesos lanzados por los usuarios?
- ¿Qué diferencia conceptual existe entre la columna de prioridad de sistema (
PR/PRI) y el valor Nice (NI)? - ¿Para qué se utiliza el comando
sleepen pruebas de laboratorio o en scripts de Bash? - ¿Cómo nos permite el comando
ps -oseleccionar columnas específicas para la visualización de datos de procesos? - ¿Qué ocurre cuando un usuario estándar intenta asignar un valor Nice negativo con el comando
renice? - ¿Por qué el sistema operativo limita a los usuarios ordinarios la capacidad de asignar prioridades altas (valores Nice negativos)?
- En el monitor interactivo
top, ¿qué teclas se utilizan para ordenar la lista de procesos por CPU y por Memoria respectivamente? - ¿Qué función cumple la tecla
udentro de la interfaz interactiva detop? - ¿Cómo se logra que las modificaciones visuales aplicadas en
top(gráficos de CPU/memoria, modo árbol, etc.) se conserven para futuras sesiones?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿En qué rango numérico se definen las prioridades de procesos (valores Nice) en Linux y qué extremo representa la mayor prioridad?
El rango de valores Nice se extiende desde -20 hasta 19. El valor -20 representa la mayor prioridad posible (el proceso recibe la máxima cuota de tiempo de CPU), mientras que 19 representa la menor prioridad.
2. ¿Cuál es el valor Nice por defecto que asigna el sistema a los nuevos procesos lanzados por los usuarios?
El valor por defecto es 0, lo que equivale a una prioridad estándar o de nivel medio.
3. ¿Qué diferencia conceptual existe entre la columna de prioridad de sistema (PR/PRI) y el valor Nice (NI)?
La columna PR refleja la prioridad real con la que el planificador (scheduler) del kernel asigna tiempos de procesador. El valor NI (Nice) es el parámetro ajustable por los usuarios o administradores para influir de forma amigable sobre dicha prioridad interna del kernel.
4. ¿Para qué se utiliza el comando sleep en pruebas de laboratorio o en scripts de Bash?
sleep detiene la ejecución del proceso o de la terminal durante un tiempo determinado (en segundos). Es muy útil en scripts para crear pausas o esperas programadas, y en laboratorios para mantener un proceso activo en segundo plano mientras se analiza su comportamiento con ps o top.
5. ¿Cómo nos permite el comando ps -o seleccionar columnas específicas para la visualización de datos de procesos?
La opción -o (user-defined format) permite indicar mediante una lista separada por comas exactamente qué atributos del proceso deseamos imprimir en pantalla (por ejemplo, ps -o pid,ni,comm muestra solo el PID, el valor Nice y el comando).
6. ¿Qué ocurre cuando un usuario estándar intenta asignar un valor Nice negativo con el comando renice?
El sistema deniega la operación devolviendo el mensaje Permission denied, ya que solo el usuario administrador (root o mediante sudo) tiene privilegios para asignar prioridades superiores (valores Nice negativos) a los procesos.
7. ¿Por qué el sistema operativo limita a los usuarios ordinarios la capacidad de asignar prioridades altas (valores Nice negativos)?
Para evitar que un usuario sin privilegios pueda monopolizar los recursos del procesador en un sistema multitarea/multiusuario, lo que podría provocar la ralentización severa o inestabilidad del resto de aplicaciones y del propio sistema.
8. En el monitor interactivo top, ¿qué teclas se utilizan para ordenar la lista de procesos por CPU y por Memoria respectivamente?
Para ordenar por uso de CPU se presiona Shift + P (P mayúscula), y para ordenar por consumo de memoria RAM se utiliza Shift + M (M mayúscula).
9. ¿Qué función cumple la tecla u dentro de la interfaz interactiva de top?
Permite filtrar los procesos mostrados en pantalla para consultar únicamente aquellos que pertenecen a un usuario específico, escribiendo su nombre cuando se solicita.
10. ¿Cómo se logra que las modificaciones visuales aplicadas en top (gráficos de CPU/memoria, modo árbol, etc.) se conserven para futuras sesiones?
Pulsando la combinación de teclas Shift + W (W mayúscula). Esto guarda la configuración actual en el archivo oculto ~/.toprc en el directorio personal del usuario.
Ficha de Laboratorio: Gestión de Prioridades de Procesos (NICE/RENICE) y Monitorización con TOP
Instrucciones de entrega:
- Rellena los campos y responde en este formulario desde tu navegador.
- Pulsa el botón de imprimir al final de la página.
- Selecciona "Guardar como PDF" en el diálogo de impresión.
- Entrega el archivo PDF en el aula virtual.
Alumno/a: Fecha:
Grupo:
Completa la ficha realizando las siguientes actividades:
- Identificación de prioridades y campo NI con
ps.
Lanza un comandosleep 1000y escribe la orden usada para consultar únicamente su PID, valor Nice y comando:
Copia la salida devuelta por la terminal:
Explica qué indica un valor Nice igual a 0:
- Modificación de prioridad con
renicea valores positivos.
Escribe el comando ejecutado para cambiar el valor Nice de tu proceso a +10:
Copia la respuesta o confirmación del comandorenice:
Explica la consecuencia de incrementar el valor Nice de un proceso:
- Comprobación de restricciones de seguridad al asignar prioridades negativas.
Escribe la orden intentada para asignar un valor Nice negativo (-5) sin privilegios de root:
Copia el mensaje devuelto por el sistema:
Explica la razón por la que Linux restringe esta acción a los usuarios comunes:
- Filtrado y ordenación interactiva en el monitor
top.
Indica las teclas de acceso rápido utilizadas entoppara filtrar por usuario y ordenar por uso de memoria RAM:
Describe brevemente los datos que muestra la sección superior (cabecera) detop:
Explica la diferencia entre presionarShift + PyShift + Mdentro detop:
- Personalización y guardado de vistas en
top.
Escribe la combinación de teclas necesaria para guardar los cambios visuales entop:
Indica en qué archivo del sistema se almacena esta configuración guardada:
Explica la utilidad del modo árbol (Shift + V) dentro detop: