| Artículos | 01 JUL 1998

Gestión de procesos y módulos en Linux

Tags: Histórico
Curso Linux (III)
Javier Cáceres.

En la anterior entrega pudimos ver como desde un único terminal, se pueden ejecutar varias tareas concurrentemente especificando que dichas tareas, o procesos han de ejecutarse en segundo plano. En este artículo describiremos cómo gestionar tales procesos e instalar controladores de dispositivos mediante módulos.

Parte del proceso de “conectarse al sistema”, es decir, de crear una sesión Linux, es la creación de su entorno. Todos los procesos (programas arrancados, en memoria), precisan para su ejecución de ciertos valores que configuran su entorno. En principio, los valores de lo que se conoce como el “entorno shell”, son independientes para cada proceso y permiten a la aplicación determinar qué aspecto tiene el entorno en el que se va a ejecutar. Los objetivos de estas variables pasan por definir desde la ruta de datos (path), hasta el nombre de la shell, pasando por el directorio de usuario, tipo de terminal, el prompt del sistema, nombre del usuario, máquina, etc. Por lo tanto, no distan mucho de la función que desempeñan en otros sistemas operativos como DOS, con la salvedad de que en Linux son más numerosas (véanse algunas en la tabla 1). Para hacernos una idea de la cantidad, tecleando el comando env | more obtendremos como salida el estado actual de las variables de nuestra sesión. Exceptuando ciertas variables que establece el propio sistema, podemos modificar o añadir todas las variables que deseemos a fin de personalizar nuestro entorno. El formato para fijar el valor de una cierta variable dependerá de la shell que estemos usando. Siempre hemos de tener presente que los nombres de variable suelen estar en mayúsculas y, que si bien el valor que le asignemos puede ser cualquiera, si deseamos asignar un cierto texto, hemos de contenerlo entre comillas simples o dobles. Con Bash, podemos primero asignar el valor de la nueva variable y luego exportarlo al sistema: REVISTA=”Pc World”; export REVISTA o bien exportarlo directamente: export REVISTA=”Pc World”, mientras que si utilizamos Csh la orden que precisamos es setenv: setenv REVISTA=”Pc World”.

Para consultar el valor contenido en cualquiera de las variables, simplemente hemos de indicar su nombre precedido del metacaracter “$”, y el intérprete de comandos se encargará de sustituir la aparición de dicha variable por su valor. En el ejemplo anterior, la orden echo $REVISTA tendría como salida el texto: Pc World. Las variables de entorno se utilizan mucho en los shell scripts, sobre todo en los que realizan tareas administrativas. Las razones para su uso radican principalmente en que de este modo, dichos “archivos de secuencias de shell”, resultan mucho más legibles y son válidos para todos los usuarios. Por lo tanto, la orden mkdir $HOME/ventas, estando registrado en el sistema como jcaceres sería equivalente a mkdir /home/jcaceres/ventas, con la ventaja de que la primera sentencia podrá ser empleada por otros usuarios para realizar la misma función en su directorio raíz.

Como ya se indicara el mes pasado, las variables globales de entorno (aquellas que afectan al entorno de todos los usuarios) residen en el archivo /etc/profile, aunque cada usuario puede modificar o añadir nuevas variables particulares, editando en su directorio raíz los archivos. profile si utilizamos Bash ó. login en el caso de emplear Csh.

Controles del terminal

Antes de que la información llegue o sea mostrada por el intérprete de comandos, pasa por un programa relativamente transparente: el controlador del terminal. Éste recibe los caracteres introducidos por el teclado, los analiza, y posteriormente los envía a la shell. Aparte de controlar todo el flujo de entrada/salida, permite definir una serie de caracteres especiales: los caracteres de control. Con ellos podemos definir determinadas combinaciones de teclas que envían unas ciertas señales a los procesos en curso, como la de interrupción, la de final de fichero, final de línea, suspensión de ejecución, etc., (Consulte la tabla 2 para una lista más completa). Para ver la configuración actual de nuestro terminal escriba desde la línea de comandos: stty –a. La salida de este comando muestra, tanto los identificadores de las señales, como la combinación de teclas que tienen asignada. Con la misma orden stty, también se pueden redefinir tales combinaciones, por ejemplo, stty stop ‘^P’ establecería que con la pulsación de Ctrl+P ha de detenerse el flujo de datos de pantalla.

Aunque realmente haya un buen número de señales de control, acabaremos empleando sólo unas cuantas. Principalmente Ctrl+S y Ctrl+Q encargadas del flujo de control (que funcionan de forma análoga a la tecla de pausa, congelando la pantalla) ; Ctrl+D o fin de fichero, que usamos por ejemplo cuando estamos creando un archivo con cat y queremos terminar de introducir datos; Ctrl+C que en la mayoría de los casos detiene el programa que estamos ejecutando; y por último Ctrl+Z que suspende temporalmente la ejecución de un proceso y nos devuelve al intérprete de comandos.

Los trabajos y la multitarea

La forma más sencilla de disfrutar la multitarea de Linux es simplemente permutar entre una y otra terminal virtual de la consola (Alt+F1, Alt+F2, etc.), o en el mejor de los casos ir de ventana en ventana con las X Window, pero se puede presentar el caso de que nos conectemos a un sistema Unix mediante un simple terminal remota (vía telnet o puerto serie, por ejemplo), que carece de esas bondades. Para este tipo de casos (muy comunes en grandes entornos Unix como empresas y universidades), el propio intérprete de comandos facilita los mecanismos precisos para llevar a cabo múltiples trabajos simultáneamente. Se trata en primer lugar del carácter de control que permite suspender temporalmente la ejecución de aplicaciones (por defecto Ctrl+Z), junto con el que cierra incondicionalmente una aplicación (Ctrl+C), y en segundo lugar una serie de funciones que permiten gestionar esa serie de tareas o trabajos “suspendidos”. Cada vez que se “suspende” una aplicación, se le asigna un número de trabajo, a partir del cuál se gestiona la multitarea. El comando jobs lista el número de trabajo y número de proceso de las aplicaciones en ejecución o suspendidas, bg – diminutivo de backgroud -, ordena al sistema la ejecución en segundo plano del número de trabajo que se le indique (función análoga al operador &), y fg – diminutivo de foreground -, nos trae al frente de nuevo un trabajo dado. El funcionamiento de este sistema queda reflejado en el listado 1. Estamos conectados remotamente a un equipo Linux que dispone de una conexión a Internet y nos disponemos a recibir un archivo. En el momento que empieza la transmisión, pulsamos Ctrl+Z y volvemos al intérprete de comandos. Listamos los trabajos con jobs y ordenamos que el trabajo número 1 (ftp), se ejecute en segundo plano concurrentemente mediante la orden bg %1 (nótese que hay que preceder el número de trabajo con el símbolo “%”). A partir de ahí, el ftp sigue realizando su trabajo, pero puedo seguir realizando otras tareas como el cat del ejemplo. Cuando el proceso de bajarse el archivo termina, el sistema me informa y puedo volver al ftp con la orden fg %1.

Gestión de procesos

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información