<Anterior | Contenido | Siguiente>
Además, Linux se basa en UNIX, donde ha sido una política común que varios usuarios ejecuten varios comandos, al mismo tiempo y en el mismo sistema. Es obvio que se deben tomar medidas para que la CPU administre todos estos procesos, y esa funcionalidad debe proporcionarse para que los usuarios puedan cambiar entre procesos. En algunos casos, los procesos deberán continuar ejecutándose incluso cuando el usuario que los inició cierre la sesión. Y los usuarios necesitan un medio para reactivar los procesos interrumpidos.
Explicaremos la estructura de los procesos de Linux en las siguientes secciones.
4.1.2. Tipos de proceso
4.1.2.1. Procesos interactivos
Los procesos interactivos se inicializan y controlan a través de una sesión de terminal. En otras palabras, tiene que haber alguien conectado al sistema para iniciar estos procesos; no se inician automáticamente como parte de las funciones del sistema. Estos procesos pueden ejecutarse en primer plano, ocupando la terminal que inició el programa, y no puede iniciar otras aplicaciones mientras este proceso se esté ejecutando en primer plano. Alternativamente, pueden ejecutarse en segundo plano, de modo que la terminal en la que inició el programa pueda aceptar nuevos comandos mientras se ejecuta el programa. Hasta ahora, nos centramos principalmente en los programas que se ejecutan en primer plano (el tiempo necesario para ejecutarlos fue demasiado corto para darse cuenta), pero ver un archivo con la less comando es un buen ejemplo de un comando que ocupa la sesión de terminal. En este caso, el programa activado está esperando que haga algo. El programa todavía está conectado al terminal desde donde se inició, y el terminal solo es útil para ingresar comandos que este programa pueda entender. Otros comandos solo darán como resultado errores o
falta de respuesta del sistema.
Sin embargo, mientras un proceso se ejecuta en segundo plano, el usuario no puede hacer otras cosas en la terminal en la que inició el programa, mientras se está ejecutando.
El caparazón ofrece una función llamada control de trabajo lo que permite un fácil manejo de múltiples procesos. Este mecanismo cambia los procesos entre el primer plano y el fondo. Con este sistema, los programas también se pueden iniciar en segundo plano inmediatamente.
Ejecutar un proceso en segundo plano solo es útil para programas que no necesitan la entrada del usuario (a través del shell). Por lo general, colocar un trabajo en segundo plano se realiza cuando se espera que la ejecución de un trabajo lleve mucho tiempo. Para liberar la terminal emisora después de ingresar el comando, se agrega un signo comercial al final. En el ejemplo, usando el modo gráfico, abrimos una ventana de terminal adicional a la existente:
billy: ~> xterm y
[1] 26558
billy: ~> recibas nuevas vacantes en tu correo
[1] + Corriendo
xterm y
billy: ~> xterm y
[1] 26558
billy: ~> recibas nuevas vacantes en tu correo
[1] + Corriendo
Las funciones de control total del trabajo se explican en detalle en la golpear Páginas de información, por lo que solo se enumeran aquí las aplicaciones de control de trabajos de uso frecuente:
Tabla 4-1. Procesos de control
(parte de) comando | Significado |
comando_regular | Ejecuta este comando en primer plano. |
comando y | Ejecute este comando en segundo plano (suelte la terminal) |
recibas nuevas vacantes en tu correo | Muestra los comandos que se ejecutan en segundo plano. |
Ctrl+Z | Suspender (detener, pero no salir) un proceso que se ejecuta en primer plano (suspender). |
Ctrl+C | Interrumpa (finalice y salga) un proceso que se esté ejecutando en primer plano. |
%n | A cada proceso que se ejecuta en segundo plano se le asigna un número. Al usar la expresión%, se puede hacer referencia a un trabajo usando su número, por ejemplo fg %2. |
bg | Reactivar un programa suspendido en segundo plano. |
fg | Vuelve a poner el trabajo en primer plano. |
matar | Finalizar un proceso (consulte también Comandos integrados de Shell en las páginas de información de golpear) |
Se pueden encontrar más ejemplos prácticos en los ejercicios.
Es probable que la mayoría de los sistemas UNIX puedan ejecutar detectar, que es útil cuando realmente desea que otro shell ejecute comandos. Al llamar detectar, se crea una nueva sesión con un shell adjunto y / o comandos como se especifica, que luego puede eliminar. En esta nueva sesión puede hacer lo que quiera hacer. Todos los programas y operaciones se ejecutarán independientemente del shell emisor. Luego puede desconectar esta sesión, mientras los programas que inició en ella continúan ejecutándose, incluso cuando cierra la sesión del shell de origen y elige su detectar arriba de nuevo cuando quieras.
Este programa tiene su origen en una época en la que las consolas virtuales aún no se inventaron y todo se debía hacer con un solo terminal de texto. Para los adictos, todavía tiene significado en Linux, a pesar de que hemos tenido consolas virtuales durante casi diez años.
4.1.2.2. Procesos automáticos
Los procesos automáticos o por lotes no están conectados a un terminal. Más bien, estas son tareas que se pueden poner en cola en un área de spooler, donde esperan ser ejecutadas en base a FIFO (primero en entrar, primero en salir). Estas tareas se pueden ejecutar utilizando uno de dos criterios:
• En una fecha y hora determinadas: hecho con el at comando, que discutiremos en la segunda parte de este capítulo.
• En momentos en que la carga total del sistema es lo suficientemente baja como para aceptar trabajos adicionales: se realiza con el lote mando. De forma predeterminada, las tareas se colocan en una cola donde esperan ser ejecutadas hasta que la carga del sistema sea inferior a 0.8. En entornos grandes, el administrador del sistema puede preferir el procesamiento por lotes cuando se deben procesar grandes cantidades de datos o cuando las tareas que exigen una gran cantidad de recursos del sistema deben ejecutarse en un sistema ya cargado. El procesamiento por lotes también se utiliza para optimizar el rendimiento del sistema.
4.1.2.3. Demonios