processes unix process control
Gestión de procesos en Unix:
En Unix, todas las instrucciones fuera del kernel se ejecutan en el contexto de un proceso.
Un proceso es una secuencia de instrucciones y cada proceso tiene un bloque de datos controlados asociado. Los procesos se pueden manipular de forma similar a como se pueden manipular los archivos.
Por ejemplo, como 'ls' se puede usar para ver la lista de archivos, 'ps' se puede usar para ver la lista de procesos.
Video de Unix # 23:
En este tutorial, cubriremos qué información relacionada con el proceso se almacena y también describiremos algunos comandos que se utilizan para administrar procesos. También proporcionaremos una breve descripción de cómo se pueden depurar los scripts de comandos.
Lo que vas a aprender:
Información del proceso Unix
La tabla de procesos contiene información de todos los procesos que se están ejecutando actualmente. El objetivo principal de esta tabla es gestionar todos los procesos en ejecución de forma eficaz.
¿Cuál es la máscara de subred adecuada para una red entre dos hosts?
Nota: Como sistema operativo multitarea y multiusuario, Unix tendrá muchos procesos ejecutándose al mismo tiempo.
La tabla contiene información como:
- Identificacion de proceso
- ID de proceso principal
- Estado de los procesos
- uso de CPU
Los procesos en Unix pasan por varios estados dependiendo de diversas circunstancias. Los cambios de estado se pueden desencadenar si un proceso necesita esperar a que se complete una operación de lectura o escritura, o cuando se debe dar la oportunidad de ejecutar un proceso diferente más urgente.
Comandos de control de procesos
Hay varios comandos disponibles para revisar y manipular procesos. El comando 'ps' se puede utilizar para ver la información del estado del proceso.
Mando | ps: proporciona información de todos los procesos que se están ejecutando actualmente. |
---|---|
Sintaxis común | $ ps (OPCIONES) |
Ejemplo 1 | $ ps Brinda información sobre el proceso, incluido el PID, el nombre del terminal, la hora de creación y el nombre de los procesos. |
Como se discutió en un tutorial anterior, los procesos se pueden clasificar como primer plano, segundo plano o demonio. Cuando se ejecuta un comando desde la terminal, se ejecuta normalmente en primer plano. Para ejecutar un proceso en segundo plano, se puede utilizar el botón '&' al final del comando.
Ejemplo:
|_+_|Este comando buscará las líneas que contienen el patrón 'cómo' y almacenará la salida en el archivo2. Si el archivo1 es razonablemente grande, es posible que deseemos continuar con otras acciones y ejecutar este comando en segundo plano. Con el '&' al final, este comando se ejecutará como un proceso en segundo plano.
Es posible suspender un proceso en primer plano mediante el comando '^ Z'. Este comando mueve el proceso de primer plano actual a un estado suspendido en segundo plano. A partir de ahí, el proceso se puede presionar para que se reanude en segundo plano usando el comando 'bg', o se puede traer de vuelta al primer plano usando el comando 'fg'.
Cada proceso también está asociado con una prioridad. Esto se utiliza para garantizar que el sistema operativo pueda asignar tiempo de manera justa a varias tareas de procesamiento. El comando 'agradable' se puede utilizar para reducir la prioridad de un proceso y, por lo tanto, ser 'agradable' para los otros procesos, es decir,
$ agradable
Esta línea ejecutará el comando especificado con una prioridad más baja; de manera predeterminada, la prioridad se reducirá en 10. El comando también toma un parámetro que se puede usar para usar un nivel diferente de 'amabilidad'.
Ejemplo:
|_+_|Este comando ejecuta 'ls' con la prioridad reducida en 20.
También es posible aumentar la prioridad con una 'amabilidad' negativa. Sin embargo, esto necesita el permiso de superusuario.
Cuando se cierra una terminal o sesión de inicio de sesión, envía la señal SIGHUP a los procesos secundarios. De forma predeterminada, esta señal hará que los procesos secundarios terminen. El comando 'nohup' se puede utilizar para permitir que los comandos continúen ejecutándose incluso cuando finaliza la sesión de inicio de sesión.
Ejemplo:
|_+_|Con este comando, el proceso de clasificación de archivo1 y guardado en archivo2 continuará incluso si hemos cerrado la sesión del sistema.
El comando 'kill' se puede utilizar para finalizar cualquiera de los procesos según los permisos.
Ejemplo:
|_+_|Este comando terminará un proceso con la identificación del proceso. El PID de un proceso se puede obtener usando el comando 'ps'.
Este comando 'at' se utiliza para ejecutar comandos en una fecha y hora determinadas en el futuro.
Ejemplo:
|_+_|Depuración de Unix
Unix proporciona una serie de mecanismos para ayudar a encontrar errores en sus scripts de comandos. Estos mecanismos se pueden utilizar para ver un seguimiento de lo que se está ejecutando, es decir, la secuencia en la que se ejecutan los comandos. El seguimiento se puede utilizar para comprender y verificar la lógica y el flujo de control del script.
=> conjunto -v
modo detallado: Establecer esta opción antes de ejecutar un comando asegurará que el comando que se ejecutará se imprima en stdout antes de que se ejecute realmente.
=> conjunto -x
modo de seguimiento de ejecución: La configuración de esta opción mostrará cada comando a medida que se ejecuta junto con sus argumentos.
=> establecer -n
modo no ejecutivo: La configuración de esta opción muestra cualquier error sin ejecutar ningún comando.
Consulte nuestro próximo tutorial para saber más sobre Secuencias de comandos de Shell avanzadas.
PREV Tutorial | SIGUIENTE Tutorial
Lectura recomendada
- Comandos de control de procesos Unix como Ps y Top (Parte C)
- Comandos Unix: Comandos Unix básicos y avanzados con ejemplos
- Comandos de procesamiento de texto Unix: filtros Unix con ejemplos
- Tutorial de Unix Pipes: Pipes en la programación Unix
- Más comandos Unix Filter y Awk, Sed en el procesamiento de texto
- Argumentos de la línea de comandos en un script de shell de Unix con ejemplo
- Tutorial de UNIX para principiantes (más de 20 vídeos de formación sobre Unix en profundidad)
- Cómo comparar dos archivos en Unix: comandos de comparación de archivos