Linux, ubuntu, gnome, debian, xubuntu, GNULa Zona Linux, la zona linux, Todo lo relacionado al mundo de GNU / Linux, ubuntu, debian, etcPosteado por:
![]() REGISTRATE! es GRATIS!! CURSO GNU / LINUX - (5° de 8) Administración de Procesos Como dijimos antes, el LINUX está diseñado para trabajar con procesos interactivos. Para ello implementa un esquema de round robin para la administración de la CPU, por el cual cada proceso va recibiendo una pequeña porción de tiempo de CPU para su trabajo, según el número de prioridad que cada proceso tenga asociado. En este esquema, los números menores corresponden a las prioridades más altas. Los procesos del sistema tienen asignados números negativos, de modo tal de tener prioridades siempre superiores a los procesos de usuario. Se cuenta además con una técnica de envejecimiento, por el cual la prioridad de un proceso es aumentada a medida que transcurre tiempo dentro del sistema, y además, un proceso puede tener que liberar la CPU por la aparición de eventos de más importancia o porque él mismo requiera algún evento. En este último caso, queda dormido hasta que se produce dicho evento. Para la administración de los procesos, entendiendo a éstos como un programa más su entorno, el LINUX les asigna a cada uno un número entero, el identificador del proceso. Además, cada proceso tiene asociado varios bloques de control, almacenados en el núcleo y utilizados para planificar el uso de la CPU y administrar los procesos. Una estructura de proceso contiene estos datos básicos para un proceso: su identificador, prioridad, punteros a otros bloques de control. Hay una tabla de estructuras de procesos, con indicador del estado en que está cada proceso: así, una cola de procesos listos para ejecución, una de procesos en espera de Entrada/Salida, etc. Los procesos se comunican entre sí mediante pipes, a los cuales se puede acceder por medio de un descriptor de archivo, ya que el LINUX los trata como archivos, salvo que permite que se los lea sólo una vez, tras lo cual los destruye. Además, todo proceso mantiene una tabla con sus archivos abiertos; en esta tabla se crean 3 entradas automáticamente al crearse el proceso. Ellas son: 0 standard input Por defecto, el teclado 1 standard output Por defecto, la pantalla 2 standard error Por defecto, la pantalla Todas estas pueden ser redireccionadas mediante los siguientes símbolos: < Redirecciona la entrada estándar Sintaxis comando < arch Descripción Redirecciona la entrada estándar. De ese modo, el comando recibe la entrada desde el archivo arch en lugar del teclado. Ejemplo copy < micopia Copia directorios según lo especificado en el archivo micopia. > Redirecciona la salida estándar Sintaxis comando> arch Descripción Redirecciona la salida estándar. De ese modo, la salida producida por la ejecución de comando se guarda en el archivo arch en lugar de mostrarla por pantalla. Ejemplo cat carta1> micarta Lista el archivo carta1 en el archivo micarta. 2> Redirecciona la salida de errores estándar Sintaxis comando 2> arch Descripción Redirecciona la salida de errores estándar. De ese modo, los errores producidos por la ejecución de comando se guardan en el archivo arch en lugar de mostrarlos por pantalla. Ejemplo head -20 carta1 2> micarta Lista las 20 primeras líneas del archivo carta1; si hay errores, los lista en el archivo micarta. Modo de ejecución de los procesos Hay dos formas básicas de ejecutar procesos en LINUX: foreground el usuario debe esperar que termine el trabajo antes de podercontinuar background el usuario envía el comando y puede seguir trabajando La forma de ejecutar un comando en modo background es: comando & Cuando el usuario invoca un comando con este modo, el sistema le devuelve el control (el prompt) tras mostrarle el identificador del usuario. Además, los comandos se pueden ejecutar secuencial o concurrentemente: Ejecución secuencial: comando1;comando2 Ejecución concurrente: | -pipe- La salida del primer comando se toma como la entrada del segundo Sintaxis comando1 | comando2 Descripción Produce que la salida estándar del comando1 sea la entrada estándar del comando2, ejecutándose concurrentemente. En la medida que el proceso del comando1 va generando datos, éstos son puestos a disposición del proceso del comando2. Ejemplo ls -l | more Lista el directorio -en formato largo- con corte por pantalla. tee Transcribe la entrada estándar a la salida estándar Sintaxis tee [-i] [-a] [-u] [arch] Descripción Transcribe la entrada estándar a la salida estándar y lo copia en arch. Las opciones pueden ser: -i Ignora las interrupciones -a Provoca que la salida sea agregada al archivo antes que crearlo -u Para que la salida no sea guardada en bufffers (escritura directa) Ejemplo grep abc | tee abc.grep | sort | tee abc.sort | more El comando grep muestra todas las líneas de abc; su salida es tomada como entrada para el sort, tras lo cual es enviado a la salida estándar con corte por pantalla. Para una mejor comprensión, ver los modos de ejecución de los procesos más adelante. Comandos para Procesos ps Reporta estado de procesos Sintaxis ps [opciones] Descripción Reporta el estado de los procesos activos, con información tal como el identificador de procesos, el tiempo acumulado de ejecución y el nombre del comando. Más información se puede obtener con las opciones. Las principales opciones pueden ser: -e Muestra la información sobre cada proceso activo. -d Muestra información de todos los procesos excepto de los líderes de grupo. -a Muestra la información de todos los procesos más usuales. -f Muestra información completa de los procesos Ejemplo ps -e PID TTY TIME COMMAND 0 ? 0:00 swapper 1 ? 0:01 init 17 02 0:20 sh . . . kill Finaliza un proceso Sintaxis kill [-signo] id_proceso Descripción Envía la señal de terminar (15) al proceso cuyo identificador se indica, el cual, si no la atrapa o ignora es abortado. Este comando lo puede ejecutar sólo el mismo usuario del proceso o el super-usuario. Si se envía un kill -9 el proceso es abortado sin alternativa. El 0 como identificador de proceso mata todos los procesos del usuario, y en combinación con -9 aborta también al shell, por lo que el usuario es sacado del sistema. Ejemplo kill -9 17 Aborta el proceso 17 at - batch Ejecuta comandos en tiempo diferido Sintaxis at hora [fecha] [incremento] at -r id_job ... at -l [id_job ...] at -qletra hora [fecha] [incremento] batch Descripción Ambos comandos envían a ejecutar comandos en tiempo diferido. Difieren en cuanto al despacho de las tareas: un comando enviado con at se ejecuta en el momento indicado, mientras que un comando enviado con batch se ejecuta cuando la carga del sistema lo permite. Las argumentos que recibe at son: hora Puede ser 1, 2 ó 4 dígitos. Si son hasta 2 dígitos, indica sólo la hora. Si son 4, indica hora y minutos; puede ser de la forma hh:mm, y seguido por am o pm. Se aceptan también como valores posibles las palabras claves noon, midnight y now. fecha El formato genérico es [aa,] nombre-mes dd o bien nombre-día (completo o las 3 primeras letras). Se aceptan también como valores posibles las palabras claves today y tomorrow. Por defecto, se asume today, salvo que la hora indicada ya haya pasado, en cuyo caso se asume tomorrow. Siempre asume hacia el futuro. incremento Es un modificador para la hora y fecha (si está) de la forma +n unidades, donde unidad puede ser minutes, hours, days, weeks, months o years. Son equivalentes las formas +1 unidad y next unidad. -r id_job Remueve un proceso enviado por at o batch. El identificador usar es el asignado al ser enviado. -l [id_job] Lista la hora de despacho del proceso enviado por at o batch cuyo identificador se indica. Si no se pone ninguno, lista la de todos los jobs de ese usuario. -qletra Ubica la tarea en la cola denominada letra ("a"-"z") Ejemplo at 8:15am Set 18 < mijob Envía el archivo con comandos mijob para ejecución a las 8:15 del 18-Set. at now + 30 day < mijob Envía el archivo con comandos mijob para ejecución dentro de 30 días. crontab Ejecuta comandos en intervalos regulares Sintaxis crontab [arch] crontab -r crontab -l crontab -u usuario -r crontab -u usuario -l Descripción Envía a ejecutar tareas indicadas en un archivo en intervalos regulares. Cada usuario puede tener hasta 1 archivo de tareas en cola. Las argumentos son: -r Elimina la tarea de la cola para ese usuario -l Lista los contenidos de la cola para ese usuario. -u Para indicar usuarios sobre los cuales trabaja el comando. Ejemplo 0 4 * * * calendar - 1,15,30 4 * * * (echo -n '';date; echo) > /dev/console Este archivo, cada día a las 4:00 hs. corre el programa calendario y, a partir de ese momento, al minuto, a los 15 y a las 30 minutos muestra en la consola la fecha. FIN DE LA QUINTA PARTE (5 de 8) ![]() Información del Post
![]()
1062 Visitas1 Favoritos 0 Puntos Creado el: Junio 24, 2009, 01:43:03 am Categoría: Distros Tags: CURSO tutorial gnu curso gnu/linux Administracion Agregar a:
Firma
![]() ![]() |