HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
ADMINISTRACIÓN DE PROCESOS
1. ¿Qué es un script en Linux? ¿Para qué sirve? ¿Cómo se crea? ¿Cómo se
ejecuta?
En el contexto de Linux, un script es un archivo de texto plano que contiene una
secuencia de comandos que se pueden ejecutar en un intérprete de comandos o
Shell. Estos scripts pueden estar escritos en lenguajes de scripting como Bash,
Python, Perl, Ruby, entre otros. Los scripts se utilizan para automatizar tareas,
ejecutar secuencias de comandos de forma repetida, realizar configuraciones del
sistema, procesar datos y llevar a cabo una variedad de operaciones en el sistema
operativo.
Creación de un Script
a. Abre un editor de texto, como nano, vi, Emacs, gedit o cualquier otro de
preferencia.
b. Escribe los comandos o secuencia de comandos en el archivo de texto.
c. Guardar el archivo con la extensión .sh para indicar que es un script de Bash.
Ejecución de un Script
a. Antes de ejecutar un script, debe dársele permisos de ejecución. Lo cual es
posible hacerlo con el comando “chmod”.
b. Luego, para ejecutar el script, se deberá indicar la ruta completa o navegar el
directorio que contiene el script antes de ejecutarlo.
c. El script se ejecutará y mostrará la salida en la terminal.
2. ¿Qué significa ejecutar un comando en segundo plano? ¿Y en primer plano?
Ejecutar un comando en primer plano y en segundo plano se refiere a cómo se
maneja la ejecución de un proceso o comando en un sistema operativo, como Linux.
Estas son dos formas diferentes de ejecutar programas o comandos, y cada una tiene
sus propias características y propósitos:
Ejecución en Primer Plano Ejecución en Segundo Plano
Cuando se ejecuta un comando en Cuando se ejecuta un comando en
primer plano, este proceso se ejecuta y segundo plano, este proceso se ejecuta
toma control de la terminal actual. en segundo plano sin bloquear la
terminal. Puede seguirse introduciendo
otros comandos mientras el proceso se
ejecuta en segundo plano.
Mientras el proceso se ejecuta en primer Útil para tareas que no requieren
plano, la terminal queda bloqueada y no interacción continua del usuario y para
es posible introducir nuevos comandos liberar la terminal para realizar otras
hasta que el proceso termine o se operaciones mientras se ejecuta el
interrumpa. proceso.
Esto es útil para comandos que Es posible enviar un proceso que ya se
requieren interacción del usuario o cuya está ejecutando en primer plano al
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
salida se desea ver directamente en la segundo plano utilizando combinaciones
terminal. de teclas como Ctrl+Z para detenerlo y
luego “bg” para continuar ejecutándolo
en segundo plano.
Para ejecutar un comando en primer Para ejecutar un comando en segundo
plano, simplemente se ejecuta sin plano, generalmente se agrega el signo
ningún modificador adicional. “&” al final del comando.
3. ¿Para qué se utiliza el comando jobs? Muestre su ejecución y describa
brevemente la salida que produce su ejecución.
El comando Jobs se utiliza en sistemas Unix y Linux para listar los trabajos o procesos
que se están ejecutando en segundo plano en la sesión actual de un Shell. Muestra
una lista de trabajos que se han iniciado en esa sesión o terminal, junto con un
identificador de trabajo (job ID) y su estado. Esto es especialmente útil cuando se
ejecutan múltiples comandos en segundo plano y se necesita un resumen de estado.
Para ejecutar el comando Jobs simplemente se escribe en la terminal.
Con el primer comando sleep 5 deja inactiva la terminal durante 5 segundos, después
fueron 15 segundos y detuve el proceso dando Ctrl+Z siendo así el primero mostrado
tras ejecutar jobs, después ejecuté el mismo comando, pero en segundo plano por
ello la característica Running mostrada al ser el segundo comando mostrado tras la
ejecución de jobs.
4. Mencione el símbolo que se utiliza para ejecutar órdenes en segundo plano.
El símbolo que se utiliza para ejecutar ordenes en segundo plano en Unix y Linux es
el signo ampersand “&”. Al añadir “&” al final de un comando, ese comando se
ejecutará en segundo plano, lo que significa que se ejecutará sin bloquear la terminal
y se podrá seguir utilizando la terminal para introducir otros comandos mientras el
proceso se ejecuta en segundo plano.
5. ¿Cómo cambiar un proceso en ejecución de segundo plano a primer plano?
Para cambiar un proceso de ejecución de segundo plano a primer plano, es posible
usar el comando “fg” (foreground).
1. Primero se utiliza el comando “jobs” para listar los trabajos en segundo plano
y sus identificadores de trabajo (job IDs).
2. Luego, se usa el comando fg seguido del identificador de trabajo (job ID) del
proceso que se desee llevar al primer plano.
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
3. Para volver a enviarlo al segundo plano después, se suspende con Ctrl+Z y
luego usar el comando bg.
6. ¿Qué significa una “salida a nada”? Identifique al final de la práctica el
equivalente a este concepto. ¿Cómo se representa la salida a nada?
La expresión “salida a nada” se refiere a redirigir la salida de un comando a un lugar
que no sea ningún archivo o dispositivo específico, es decir, a descartar la salida. En
otras palabras, cuando se redirige la salida, se indica que no se requiere que la salida
del comando se muestre en la pantalla ni se almacene en ningún archivo.
La representación de la salida a nada se realiza en sistemas Unix y Linux utilizando
el carácter especial “>/dev/null”. Lo cual redirige la salida estándar del comando a
“/dev/null”, que es un dispositivo especial en Unix y Linux que descarta todo lo que
se envía.
7. Para qué sirve el comando top. Con qué opción se puede mostrar solamente
los procesos de un usuario. Describa brevemente los campos que produce la
salida estándar de este comando.
El comando “top” en Unix y sistemas basados en Linux se utiliza para mostrar
información en tiempo real sobre los procesos en ejecución y el uso del sistema.
Proporciona una visión dinámica y actualizada de la actividad del sistema, mostrando
estadísticas sobre el uso de la CPU, la memoria, los procesos en ejecución, entre
otros.
Para mostrar solo los procesos de un usuario específico con “top”, es posible usar la
opción “-u” seguida del nombre de usuario.
La salida estándar de “top” incluye varios campos, y aquí hay una breve descripción
de algunos de los campos más comunes:
• PID (Process ID): Identificador único asignado a cada proceso.
• USER: Nombre del usuario que inició el proceso.
• PR (Priority): Prioridad del proceso.
• NI (Nice): Valor de ajuste de prioridad (nice value).
• VIRT (Virtual Memory): Cantidad de memoria virtual utilizada por el proceso.
• RES (Resident Memory): Cantidad de memoria física en uso por el proceso.
• SHR (Shared Memory): Cantidad de memoria compartida utilizada por el
proceso.
• S (%CPU): Porcentaje de uso de la CPU por parte del proceso.
• MEM (%MEM): Porcentaje de memoria RAM utilizada por el proceso.
• TIME+: Tiempo total de CPU consumido por el proceso desde su inicio.
• COMMAND: Nombre del comando o programa asociado con el proceso.
8. ¿Qué es prioridad aplicada a un proceso? ¿En Linux qué valores se utilizan
para la prioridad alta y la prioridad baja?
En el contexto de un sistema operativo, la prioridad de un proceso es un valor que
determina la importancia relativa de ese proceso en comparación con otros procesos
en el sistema. Un proceso con una prioridad más alta tiene más oportunidades de
utilizar recursos de la CPU en comparación con procesos con prioridades más bajas.
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
En Linux, la prioridad de un proceso que se puede ajustar utilizando valores
numéricos. Estos valores numéricos indican la prioridad del proceso en relación con
otros procesos en ejecución. El rango de valores típicamente va de -20 a 19, donde:
• El valor más bajo (-20) representa la prioridad más alta.
• El valor más alto (19) representa la prioridad más baja.
Por lo tanto, en Linux, valores negativos indican prioridades más altas, mientras que
valores positivos indican prioridades más bajas. El valor por defecto es generalmente
a 0.
Para establecer la prioridad de un proceso en Linux, se utiliza el comando “nice”. Un
valor nice negativo da al proceso una prioridad más alta, mientras que un valor nice
positivo le da una prioridad más baja.
9. ¿Para qué sirven los comandos nice y renice? ¿Cuándo usar cada uno de
ellos?
Tanto “nice” como “renice” son comandos en sistemas Unix y Linux que se utilizan
para ajustar la prioridad de ejecución de un proceso.
Comando Uso Función Ejemplo
nice nice [opciones] [comando Inicia un nuevo nice -n 10
[argumentos…]] proceso con una mi_comando
prioridad
específica. Se En este ejemplo
puede “mi_comando” se
proporcionar un ejecutará con una
nivel de prioridad prioridad más baja
al comando, y el (menos
proceso se importante) debido
ejecutará con esa al valor nice
prioridad. positivo de 10.
renice renice [opciones] -n Cambia la renice -n -5 -p
nueva_prioridad -p PID prioridad de 1234
[PID2 PID3 …] ejecución de un
proceso que ya En este ejemplo,
está en ejecución. el proceso con el
Es posible PID 1234 tendrá
especificar uno o su prioridad
más PIDs ajustada a un
(identificadores de valor más alto
proceso y ajustar (más importante)
su prioridad, debido al valor
negativo de la
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
nueva prioridad (-
5).
Se utiliza “nice” cuando se esté iniciando un nuevo proceso y se desee establecer su
prioridad desde el principio. Y “renice” se utiliza cuando un proceso ya está en
ejecución y se desea ajustar su prioridad después de haber comenzado.
10. ¿Qué comando sirve para eliminar un proceso? Describa las 2 formas de
eliminar un proceso al utilizar PID o “número de tarea”.
El comando que se utiliza para enviar señales a procesos en Unix y Linux, incluyendo
la señal para finalizar un proceso, es el comando “kill”, el cual puede ser utilizado
para terminar procesos especificados por su ID de proceso (PID) o su número de
tarea.
Eliminación de un Proceso por PID
Para eliminar un proceso por su ID de proceso (PID), se usa la sintaxis: kill PID.
Reemplazando “PID” con el ID de proceso del proceso que se desea eliminar. Por
ejemplo: kill 1234.
Si el proceso no termina de manera normal, se puede forzar su terminación utilizando
la señal “-9” (SIGKILL). En sintaxis sería: kill -9 PID. Por ejemplo: kill -9 1234.
Eliminación de un Proceso por Número de Tarea
En lugar de especificar el PID, también se puede utilizar el número de tarea (job
number) si el proceso se está ejecutando en el primer plano o en segundo plano.
Para eliminar un proceso por su número de tarea se usa la siguiente sintaxis: kill %n.
Se reemplaza “n” con el número de tarea del proceso que se desea eliminar. Por
ejemplo: kill %1.
Al igual que con el método por PID, si se necesita forzar la terminación del proceso,
es posible usar la seña l“-9” (SIGKILL). En sintaxis sería: kill -9 %n. Por ejemplo: kill
-9 %1.
11. ¿Con cuál comando se puede conocer el PID de un proceso? ¿Cómo conocer
el número de tarea de un proceso? Muestre la ejecución de ambos.
Para conocer el PID (ID de proceso) de un proceso en Unix o Linux, se usa el
comando “ps” junto con opciones específicas. Usando la sintaxis: ps aux | grep
nombre_del proceso. Reemplazando “nombre_del_proceso” con el nombre o parte
del nombre del proceso del cual se desea conocer el PID. Este comando listará los
procesos que coincidan con el nombre proporcionado y mostrará información
detallada, incluido su PID.
Alternativamente, también se puede usar el comando “grep” para obtener el PID
directamente. Su sintaxis es: pgrep nombre_del_proceso. Esto proporcionará solo
los PID de los procesos que coincidan con el nombre especificado.
Para conocer el Número de Tarea (Job Number) de un proceso, si un proceso está
siendo ejecutado en la terminal y se desea conocer su número de tarea (job number),
se puede usar el comando “jobs”. Este comando mostrará una lista de los trabajos
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
en ejecución y sus números de tarea asociados. El número de tarea es utilizado con
el formato “%n”, donde “n” es el número de la tarea. Si solo hay un trabajo en
ejecución, generalmente se asocia con “%1”.
Práctica 10. Administración de Procesos
1. A través de nano, crear y ejecutar 2 scripts de cualquiera de las siguientes
estructuras:
a. if-then-else
b. while
c. for
d. until
e. case
Si sus scripts son iguales a otro alumno, se le solicitará modificar su script
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
2. Crear un script con estructuras combinadas. Por ejemplo: tabla de multiplicar en
un ciclo de 10, que al teclear un valor: 1, 2, etc. realice la multiplicación y finalice al
teclear un cero.
3. Crear un script que ejecute un ciclo infinito y despliegue el mensaje “hola
mundo”
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
4. Ejecutar el script creado con la salida a nada y en segundo plano
5. Traerlo a primer plano
6. Detenerlo (no confundir con cancelarlo)
7. Ejecutar el script creado en primer plano y con salida a nada
8. Detenerlo
9. Ejecutarlo en segundo plano con salida a nada y cambio de prioridad de 10
10. Ejecutarlo dos veces más con salida a nada y en segundo plano el primero
con cambio de prioridad de -15 y el segundo con cambio de prioridad de 20
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
11. Verificar las estadísticas de ejecución (asignación de tiempo de uso del
procesador). Ejecute con la opción de mostrar solamente los procesos de
usted.
12. Asignar la más alta prioridad a la primera tarea de usted
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
13. Asignar la más baja prioridad a la tercera tarea de usted
14. Verificar las estadísticas de ejecución (asignación de tiempo de uso del
procesador). Mostrar solamente los procesos de usted.
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
15. Eliminar una tarea utilizando el pid
16. Eliminar un proceso utilizando el número de tarea
Bibliografía
• Barrett, D. J. (2016). Linux pocket guide: Essential commands (3a ed.). O’Reilly
Media.
HÉCTOR DANIEL SALAS PÉREZ TAREA 10 OCTUBRE 26 DE 2023
• Bovet, D. P., & Cesati, M. (2006). Understanding the Linux Kernel. Shroff Publishers
& Distributors.
• Garrels, M. (2004). Bash Guide for Beginners. Fultus Corporation.
• Nemeth, E., Snyder, G., Hein, T. R., & Whaley, B. (2011). Unix(r) and Linux(r)
System Administration Handbook. Prentice Hall.
• Shotts, W. E., Jr. (2012). The Linux command line: A complete introduction. No
Starch Press.
• Silberschatz, A., Gagne, G., & Galvin, P. B. (2018). Operating System
Concepts (10a ed.). Wiley.
• Stevens, W. R., & Rago, S. A. (2013). Advanced programming in the UNIX
environment (3a ed.). Addison-Wesley Educational.
Comandos, parámetros y otros:
./ jobs & > /dev/null top kill %x nice renice