Nivel I
Facultad de Ciencia y Tecnología – Oro Verde - 2009
1
Nivel I
Curso de Administración
GNU/Linux
Facultad de Ciencia y Tecnología – Oro Verde - 2009 Facultad de Ciencia y Tecnología – Oro Verde - 2009
El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito del Software Libre.
2
tt
Teoría de Procesos
Administración de Procesos en GNU/Linux
Trabajando con la línea de comandos
Capítulo 3: Administración de Procesos Capítulo 3: Administración de Procesos
En esta clase veremos que todo programa que se encuentra en ejecución lo hace en forma de un proceso, aprenderemos como funcionan y como un sistema operativo “puede” ejecutar más de un proceso al mismo tiempo. Veremos además como GNU/Linux administra los procesos y como podemos trabajar con ellos.
3
Clase 5: Teoría de Procesos Clase 5: Teoría de Procesos
Proceso
Es un conjunto de actividades para realizar un determinado fin. Un proceso
informático es un programa en ejecución con un entorno asociado, también
conocido como tarea.
Programa
!=
Proceso
Es un conjunto de instrucciones preparadas para ser ejecutadas por una computadora.
Es una o más instancias de un programa que se encuentra en ejecución en un momento dado. Un proceso es un conjunto de operaciones que se realizan con un mismo fin. Un proceso informático es un conjunto de instrucciones de computadora que se ejecutan en un ordenador para llevar a cabo una determinada tarea. Un proceso consta de: ● Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. ● Un estado de ejecución en un momento dado, nos referimos a la forma en la que se encuentra. ● Su memoria de trabajo, es decir la cantidad de memoria que ha reservado y utilizado. ● Otra información que permite al sistema operativo su planificación y acceso. El sistema operativo es el encargado de crear, modificar, eliminar y gestionar la comunicación entre los distintos procesos. Además debe encargarse de reservar recursos para que los mismos puedan ejecutarse y de definir que proceso se ejecutará en qué momento. Un proceso es un programa en ejecución, pero esto no quiere decir que un programa por sí mismo es un proceso, un programa es una entidad pasiva. Programas y procesos son entidades distintas. En un sistema operativo multitarea, múltiples instancias de un programa pueden ejecutarse sumultáneamente. Cada instancia es un proceso separado. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habría cinco instancias del mismo programa, es decir, cinco procesos distintos.
4
Clase 5: Teoría de Procesos Clase 5: Teoría de Procesos
Estados de un Proceso
Nuevo Listo Ejecución Espera Terminado Los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan esperando la realización de la operación de Entrada/Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Espera. Se agregan además un estado Nuevo y otro Terminado. Los cinco estados de este diagrama son los siguientes: ● Ejecución: el proceso está actualmente en ejecución. ● Listo:: el proceso está listo para ser ejecutado, sólo está esperando que el planificador de corto plazo así lo disponga. ● Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la finalización de una operación de Entrada/Salida solicitada por una llamada al sistema operativo. ● Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal. ● Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc. Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Espera y Listo tienen ambos colas de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso. Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación. Asimismo, existen varias colas en estado de espera, como mínimo una por cada periférico.5
Clase 5: Teoría de Procesos Clase 5: Teoría de Procesos
GNU/Linux como Sistema Operativo Multitarea
● Múltiples procesos pueden ejecutarse “simultáneamente” sin interferir entre sí ● Cada proceso “cree” que se está ejecutando solo en el sistema y que tiene acceso a todos los recursos del mismo. ● Todos los procesos tienen siempre un determinado estado en el tiempo. ● El sistema operativo mantiene información de todos sus procesos y de su estado. ● Para cada proceso deben reservarse recursos y asignarse prioridades. GNU/Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que múltiples procesos pueden operar simultáneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusión" que es el único proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo. Para realizar ésto el sistema debe guardar información sobre todos los procesos que se encuentran en algún estado en un momento determinado. Si bien es cierto que estamos hablando de sistemas operativos multitarea, en realidad sólo podemos ejecutar un proceso a la vez. En realidad el núcleo ejecuta los procesos de forma muy rápida e intercambia su hilo de ejecución entre uno y otro muchas veces por segundo, ésto nos da la sensación de que estamos ejecutando varias aplicaciones al mismo tiempo pero en realidad solamente una es la que se ejecuta. Encontramos una excepción a ésto con la nueva tecnología de microprocesadores de 2 o más núcleos, en los cuales si se pueden ejecutar de forma simultánea 2 o más procesos dependiendo de la arquitectura de nuestro procesador.6
Clase 5: Teoría de Procesos Clase 5: Teoría de Procesos
PCB (Process Control Block)
Es un registro que usa el sistema operativo para almacenar información sobre los procesos que gestiona. Cada vez que se crea un proceso se crea un PCB que va a almacenar información durante todo el tiempo que el proceso viva en el sistema. Algunos campos de un PCB El Bloque de control del proceso o PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el PCB correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso. Cuando el proceso termina, su PCB es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un PCB activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un PCB incluye típicamente algunos o todos los campos siguientes: ● Identificador del proceso (Process Identificator PID,de sus siglas en Inglés). ● Estado del proceso. Por ej. listo, en espera, bloqueado. ● Contador de Programa: Dirección de la próxima instrucción a ejecutar. ● Valores de registro de CPU. Se utilizan también en el cambio de contexto. ● Espacio de direcciones de memoria. ● Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU. ● Lista de recursos asignados: (incluyendo descriptores de archivos y sockets abiertos). ● Estadísticas del proceso. ● Datos del propietario (owner). ● Permisos designados ● Señales pendientes de ser servidos. (Almacenados en un mapa de bits) ● Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de PCB, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos.7
Clase 5: Teoría de Procesos Clase 5: Teoría de Procesos
Proceso de Fork
Threads, Hilos y Multithreading
Es un mecanismo que utiliza un sistema operativo para creo un proceso crear una copia de si mismo. En este caso el primer proceso pasa a ser padre y el segundo se convierte en hijo. Esto genera que los procesos se organicen en una estructura de árbol. Proceso padre Proceso Hijo Proceso Hijo Proceso Hijo Un Thread o hilo permite realizar varias tareassimultáneamente, un proceso puede dividirse en hilos que comparten algunos recursos como el espacio de memoria que utilizan, su PCB, los archivos que tienen abiertos, etc. Actualmente en la gran mayoría de los sistemas operativos, los procesos se organizan en árboles jerárquicos en los cuales todo proceso tiene un padre (a excepción de init que es el primer proceso que se ejecuta). Esta organización permite ordenar los procesos de forma estructurada y permite que los mismos se vayan creando en la medida y forma en que se necesiten. A la hora de crear un nuevo proceso, se utiliza una llamada al sistema operativo denominada fork, la cual se encarga de crear una copia de un proceso dado y asignar ésta copia a un proceso determinado, pero especificando que su proceso padre será el proceso que lo creó. Esta llamada se utiliza en la gran mayoría de las aplicaciones de los sistemas operativos actuales y permiten crear procesos ya sea por medio del propio sistema operativo como a través de las aplicaciones que utilizan el mismo. Actualmente y a la hora de optimizar las tareas, podemos dividir un proceso en hilos, hebras o threads dando la posibilidad de que un proceso se encuentre realizando distintas tareas al mismo tiempo, cada una en un hilo o hebra distinto. Todas las hebras pertenecientes a su proceso comparten su entorno asociado y por ende se ejecutan con una velocidad mucho mayor a que si se tratasen de procesos separados.
8
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Procesos en GNU/Linux
● Init es el primer proceso a ejecutarse por el núcleo. Corre con un identificador de proceso (PID) igual a 1. ● Debe encontrarse siempre en ejecución ya que es el “Padre” de todos los demás procesos. ● Este proceso realiza varias acciones como vimos anteriormente y finalmente ejecuta varias instancias (forks) del proceso getty.init getty cron klogd ... login bashCuando el núcleo Linux inicia llega un momento en que se debe ejecutar el primer programa, el cual
se encarga de leer los scripts de inicio y dejar el sistema listo para comenzar a trabajar. Este primer
proceso es el INIT (/sbin/init) y recibe el identificador de proceso (PID) numero 1. De este proceso se desprenden varios procesos, algunos que se ejecutan una sola vez (scripts de niveles de inicio),
otros que se ejecutan repetitivamente (getty/mgetty, el programa que nos solicita login en cada
terminal que definimos en /etc/inittab).
Como ya vimos el proceso init es el proceso padre y el primero que se ejecuta de todos los demás
procesos, esto quiere decir a su vez que todos los demás procesos son creados por init, por ende
9
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Gestión de Procesos
Constantemente el núcleo y las aplicaciones de usuarios envían señales a los procesos para modificar su estado. Usuarios Aplicaciones Núcleo Proceso 1 Proceso 1 Proceso 2 Proceso 2 Proceso 3 Proceso 3 Señal 2 Señal 15 Señal 9 Para enviar señales utilizaremos el comando kill A la hora de trabajar y gestionar procesos, el sistema operativo utiliza señales para indicarles que realicen una determinada operación. Una señal se identifica con un número y establece el comportamiento que va a tomar un proceso luego de que la reciba. Además las aplicaciones mismas utilizan estas señales para por ejemplo terminar su ejecución, esperar a que un determinado recurso de la computadora esté libre o simplemente ejecutarse. El usuario también puede finalizar o cambiar el estado de un proceso, enviando una señal al mismo, para ésto utilizaremos el comando kill, como veremos más adelante. Debemos aclarar que un usuario debe terner permiso para poder detener o modificar el estado de un proceso.10
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Gestión de Procesos
Señales 15 – SIGTERM: Solicita la terminación del proceso que la recibe. 9 – SIGKILL: Termina el proceso que la recibe en forma inmediata. 2 – SIGINT: Es la misma señal que se produce cuando un usuario presiona las teclas “Control + C” para solicitar su terminación 20 – SIGSTP: Es la misma señal que se produce cuando un usuario presiona las teclas “Control + Z” para mandar un proceso a segundo plano. 19 – SIGCONT: Reanuda un proceso suspendido con SIGSTP. Para comunicarnos con determinados procesos mandamos señales a los mismos, cada señal especifica al proceso que acción debe realizar o como debe comportarse. El número de proceso que es el PID (Identificador de proceso) sirve para enviar señales a los procesos. La sintáxis es “kill SEÑAL PID” y las señales más usadas son: 15 SIGTERM > Solicita la terminación del proceso que la recibe. 9 SIGKILL > Termina el proceso que la recibe de forma inmediata. 2 SIGINT > Es la misma señal que se produce cuando un usuario en un programa interactivo presiona Controlc para solicitar su terminación. 20 SIGTSTP > La misma señal producida por Control+ z, envía el proceso a segundo plano para poner reanudarlo después. 18 SIGCONT > Reanuda un proceso suspendido previamente por la señal SIGTSTP.11
Gestión de Procesos
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Información sobre procesos Identificador de Proceso (PID) Identificador de Proceso Padre (PPID) Valor de los Registros Información sobre Usuarios y Grupos Prioridad con respecto a otros Recursos consumidos por el proceso Estado del proceso La información que tiene el sistema operativo sobre el proceso se denomina atributos del proceso. Entre los atributos de un proceso se encuentran: ●Identificador (PID) ●Identificador del proceso padre (PPID) ●Valor de los registros ●Identidades del usuario y grupos. ●Prioridad del proceso con respecto a otros. ●Recursos consumidos por el proceso. ●Ficheros abiertos, mecanismos IPC y cualquier otro tipo de recurso que suministre el sistema operativo. ●Estado del proceso. Las características que tiene un proceso dependen en parte de las propias características que tenga el sistema operativo, así por ejemplo tanto Windows 95 como OS/2 son sistemas multiproceso y monousuario, mientras que Linux se caracteriza por ser un sistema multiproceso y multiusuario,
12
Colas de Procesos
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Listo Ejecución Espera Cola de Procesos Listos Cola de Procesos en Ejecución Cola de Procesos en Espera ●Lista de procesos: Estructura de datos circular que agrupa una colección ordenada de apuntadores a descriptores de procesos, donde cada elemento apunta al siguiente ●Lista de procesos listos: Por eficiencia de búsqueda se mantiene una lista de descriptores de los procesos listos, i.e. procesos candidatos a ser ejecutados ●Lista de procesos en espera: Útil para manejo de interrupciones, sincronización de procesos y temporizadores donde un proceso suspendido espera a que se presente una determinada señal
13
Herramientas para trabajar con procesos
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Para visualizar procesos Para enviar señales a procesos ps top htop pstree kill nice renice killall Ahora veremos qué herramientas vamos a utilizar desde la línea de comandos para visualizar información sobre procesos y sobre los recursos que tienen asignados, así como también para gestionarlos. GNU/Linux nos permite realizar muchas operaciones con los procesos que residen en el sistema operativo, podemos enviar señales a un proceso para terminar su ejecución, suspenderla, solicitarle que libere los recursos que tiene asignados o modificar su prioridad.
14
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
ps – muestra información sobre los procesos que se están ejecutando en el sistema Sintaxis: ps <opciones> Opciones: a: muestra todos de todos los usuarios. u: muestra el usuario y la hora de inicio en que se inició el proceso x: muestra los procesos que no se ejecutan en una terminal Ejemplos: $ps ax $ps aux El comando ps nos permite visualizar información sobre todos los procesos que “residen” en el sistema en un momento dado. ps está basado en el sitema de archivos /proc, es decir que lee directamente la información de los archivos que se encuentran en ese directorio. Tiene una gran variedad de opciones, incluso estas opciones varían dependiendo del estilo en que se use el comando. Estas variantes son las siguientes: ● Estilo UNIX: donde las opciones van precedidas por un guión. ● Estilo BSD: donde las opciones no llevan guión. ● Estilo GNU: donde se utilizan nombres de opciones largas y van precedidas por un doble guión .15
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
Examinando la salida del comando ps ● Usuario con el que se ejecuta el proceso. ● Identificador de Proceso (PID) ●% de uso de CPU y de Memoria ● Terminal en la que se ejecuta el comando. ●Fecha de Inicio ● Comando que se ejecuta Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se mostrarán en el listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las siguientes: ● p o PID: Process ID, número único o de identificación del proceso. ● P o PPID: Parent Process ID, padre del proceso ● U o UID: User ID, usuario propietario del proceso ● t o TT o TTY: Terminal asociada al proceso, si no hay terminal aparece entonces un '?' ● T o TIME: Tiempo de uso de cpu acumulado por el proceso ● c o CMD: El nombre del programa o camndo que inició el proceso ● RSS: Resident Sise, tamaño de la parte residente en memoria en kilobytes ● SZ o SIZE: Tamaño virtual de la imagen del proceso ● NI: Nice, valor nice (prioridad) del proceso, un número positivo significa menos tiempo de procesador y negativo más tiempo (19 a 19) ● C o PCPU: Porcentaje de cpu utilizado por el proceso ● STIME: Starting Time, hora de inicio del proceso ● S o STAT: Status del proceso, estos pueden ser los siguientes ● R runnable: en ejecución, corriendo o ejecutándose ● S sleeping: proceso en ejecución pero sin actividad por el momento, o esperando por algún evento para continuar ● T sTopped: proceso detenido totalmente, pero puede ser reiniciado16
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
top – muestra la lista de procesos que consumen más recursos en el sistema Sintaxis: top <opciones> Opciones: s:deshabilita el modo interactivo. c: muestra el path absoluto con el que fue llamado cada comando de la lista. d <segundos>:permite especificar los segundos de espera entre muestreos. Ejemplos: $top c $top d 1 top (table of process) nos permite visualizar un listado de los procesos que están ejecutándose en nuestra computadora y visualizar la cantidad de recursos que consumen. Esto es útil en ambientes multiusuario a la hora de determinar si una aplicación está consumiendo demasiado tiempo de CPU, por ejemplo, y causando la lentitud del sistema.17
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
htop – muestra la lista de procesos y nos permite gestionarlos. Sintaxis: htop Comandos en modo interactivo: F1 – Muestra la ayuda F6 – Permite ordenar los procesos por consumo de memoria, consumo de cpu, usuario o PID. F10 – Sale de htop. Ejemplos: htop Abajo de todo se puede una barra con un menú de opciones accesibles mediante las teclas de función que se muestran a la izquierda de la opción en cuestión, aunque también son accesibles mediante el ratón: ● F1 Help: La ayuda del programa. Muestra entre otras cosas las teclas de acceso para las distintas funciones. También accesible mediante la tecla ‘h‘ (minúscula). ● F2 Setup: Se ingresa al menú de la configuración. Se puede cambiar lo que uno necesite, de qué forma, con qué colores, configurar las columnas. También accesible mediante la tecla ‘S‘ (mayúscula). ● F3 Search: Nos permite buscar un proceso por su nombre (comando). También accesible mediante la tecla ‘/‘. ● F4 Invert: htop nos muestra los procesos ordenados por una de sus columnas. En la captura anterior se ve que están ordenados por consumo de CPU (se ve de otro color). Esta opción permite ordenarlos de forma inversa, si inicialmente se muestra de mayor a menor consumo, al ejecutar esta opción lo haría de menor a mayor consumo. También accesible mediante la tecla ‘I‘ (mayúscula). ● F5 Tree: Muestra los procesos en forma de árbol. Los procesos son independientes pero muchos están relacionados, unos se crean a partir de otros y a la vez pueden generar otros procesos hijos. Con esta opción podemos ver dichas relaciones en la columna “Command“. También accesible mediante la tecla ‘t‘ (minúscula). ● F6 SortBy: Como dije antes, los procesos están ordenados según una columna. Con esta opción se puede definir cómo ordenarlos, si por consumo de CPU,memoria, usuario, PID, etc… También accesible mediante la tecla ‘>‘.18
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
kill – permite enviar señales a un proceso Sintaxis: kill <opciones> <señal> PID Opciones: l: muestra una tabla con las señales disponibles y sus respectivos números. s señal: permite especificar una señal por su nombre para enviar a un proceso. n señal: permite especificar una señal por su número para enviar a un proceso. Ejemplos: kill 9 9873 kill SIGKILL 3482 Como mencionábamos antes, la forma que tiene tanto el sistema operativo como el usuario con los procesos es a través de señales. Kill es el comando que nos permite realizar esta tarea, especificando a que proceso nos queremos referir (mediante su identificador de proceso o PID) seguido de la señal que queremos enviar a ese proceso, las más comunes son 15, que solicita a un proceso que termine su ejecución “amablemente” (es decir, que libere la memoria y los dispositivos asociados de forma normal) o 9 que hace que el proceso se termine de forma inmediata sin importar sus recursos asociados ni su estado.19
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
killall – permite enviar señales a un proceso usando su nombre Sintaxis: killall <opciones> <señal> nombre Opciones: l: muestra una tabla con las señales disponibles y sus respectivos números. s señal: permite especificar una señal por su nombre para enviar a un proceso. n señal: permite especificar una señal por su número para enviar a un proceso. Ejemplos: killall 9 kde killall SIGKILL amsn A diferencia del comando kill, killall nos permite mandar señales a un proceso utilizando su nombre en lugar de su PID (Process ID), ésto es útil cuando conocemos el nombre del proceso y no queremos perder tiempo en averiguar su identificador de proceso. Las opciones que soporta son las mismas que el comando kill.20
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
nice – cambia la prioridad de un proceso a la hora de ejecutarlo. Sintaxis: nice <opciones> <proceso> argumento del proceso Opciones: n: permite especificar un número entero para definir la prioridad del proceso. version: permite mostrar la versión actual del comando. help: muestra la ayuda del comando Ejemplos: # nice n 20 aptget update Una de las cosas interesantes que podemos hacer a la hora de trabajar con procesos desde la línea de comandos es asignarle prioridades. La prioridad se identifica con un número entre 20 y 20, siendo los números negativos los de mayor prioridad (20 Por ende es la prioridad más alta). Es el núcleo quien asigna las prioridades a los procesos, a medida que los crea o utiliza debido a peticiones de usuario (generalmente los programas de usuario tienen prioridad 20, lo cual no quiere decir que no se ejecuten, sino que tienen menos prioridad ya que hay procesos más necesarios que gestionan memoria, acceso a dispositivos de almacenamiento, periféricos y demás que tienen mayor importancia), pero podemos alterar esto con el comando nice, el cual nos permite modificar la prioridad o importancia de cada proceso ante los ojos del sistema operativo. Este comando se utiliza a la hora de lanzar o crear un proceso, si deseamos cambiar la prioridad de un proceso en ejecución, utilizaremos el comando renice, el cual veremos a continuación.21
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
renice – cambia la prioridad de un proceso en ejecución Sintaxis: renice prioridad <p pid> <g grupo> <u usuario> Opciones: p pid: espeficica el PID del proceso al cual queremos modificar la prioridad g grupo: permite cambiar el ID del grupo asociado al proceso. u usuario: permite cambiar el ID del usuario asociado al proceso. Ejemplos: $renice +1 p 897 $renice +2 2308 u usuario Este comando se diferencia al anterior a que en realidad permite cambiar la prioridad de un proceso en tiempo de ejecución, es decir, cuando este se encuentra ejecutándose o en alguno de los estados vistos anteriormente. Además permite cambiar el dueño y grupo de un proceso, esto es importante ya que un usuario no tiene permiso para eliminar procesos de otros usuarios, exceptuando al root o administrador, el cual, como vimos antes, tiene control total sobre el sistema.22
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
free – muestra la utilización de memoria del sistema Sintaxis: free <opciones> Opciones: m: muestra la memoria en megabytes. t: muestra totales de memoria en las columnas de total, usada y libre. s intervalo: muestra el uso de la memoria y se actualiza pasado un intervalo de tiempo. Ejemplos: $ free tm $ free s 2 El comando free se utiliza para mostrar la utilización de la memoria de la computadora por parte del sistema operativo y sus demás programas. Debemos aclarar que el núcleo se apropia de la memoria ram en la medida en que puede, ya que se supone el único sistema operativo en ejecución y luego la distribuye entre sus procesos y los del usuario. Es por esto que no debemos pensar que estamos consumiendo el total de la memoria que vemos en estas estadísticas, sino guiarnos por el comando htop, el cual nos muestra efectivamente y en tiempo real para ver el uso actual de la memoria por parte de los procesos que se encuentran ejecutándose. Expliquemos un poco como se entiende la salida de éste comando, por ejemplo: $ free m total used free shared buffers cached Mem: 2048 1996 51 0 599 364 /+ buffers/cache: 1032 1015 Swap: 0 0 0 buffers es la cantidad de memoria usada por el kernel para cachear I/O de disco cached indica la memoría usada recientemente, pero que actualmente no está en uso y que está cacheada. Así que la cantidad de memoría disponible éste equipo es la suma de free + buffers + cached (la cantidad que pone en la columna free en la segunda fila), en el ejemplo 1.015 MBytes, casi el 50% de la RAM total.23
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
uptime – indica el tiempo que lleva el sistema encendido. Sintaxis: uptime <opciones> Opciones: V: muestra la versión del programa Ejemplos: $ uptime $ uptime V Este comando nos muestra la hora del sistema, la cantidad de días y horas que lleva encendida la computadora, la cantidad de usuarios que están logueados y trabajando actualmente y la carga del CPU del equipo. Toda esta información se obtiene del sistema de archivos /proc.24
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
watch – permite ejecutar un comando periódicamente Sintaxis: watch <opciones> comando Opciones: n: permite especificar un intervalo de tiempo para ejecutar un comando. t: permite no mostrar en la salida el comando que se utiliza help: muestra la ayuda del comando Ejemplos: $ watch n 5 date $ watch t date Este comando forma parte del pack de utilidades de procesos de GNU/Linux, pero puede utilizarse para muchas cosas. Lo que nos permite es ver la salida de un comando y “refrescar” (volver a dibujar en pantalla) la salida de este comando cada cierto período de tiempo (por defecto cada 2 segundos). Se puede utilizar para ver el progreso de copia de un archivo, para verificar conexiones, para mostrar el estado de procesos y otras cosas.25
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
pgrep – busca los procesos que tienen atributos determinados. Sintaxis: pgrep <opciones> <patrón> Opciones: G: permite especificar el nombre de un grupo para poder buscar procesos. I: muestra la salida del comando en formato largo agregando el nombre del proceso. U intervalo: permite especificar el nombre de un usuario para poder buscar procesos. Ejemplos: $ pgrep G usuario $ pgrep L apache2 Al igual que el comando grep, pgrep es un filtro que se utiliza para buscar determinadas características, pero pgrep trabaja con procesos, como grep trabajaba con archivos o cadenas de texto. Podemos visualizar todos los archivos de un grupo o de un usuario por ejemplo.26
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
pstree – muestra los procesos en forma de árbol. Sintaxis: pstree <opciones> Opciones: u: permite mostrar el nombre del usuario propietario del proceso. p: permite mostrar el PID del proceso. Ejemplos: $ pstree $ pstree U Este comando nos permite visualizar la lista de procesos del sistema operativo en modo de árbol, esto quiere decir, mostrar cada proceso, su proceso hijo y su proceso padre. Recordemos que es init el primer proceso que se ejecuta y por ende es el padre de todos los demás. Esto también lo podemos visualizar con el comando htop como especificamos anteriormente. Cabe aclarar que en la teoría de procesos, al “matar” (enviar una señal para que el proceso finalice, generalmente 9 o 15) un proceso, todos sus hijos también son dados de baja del sistema. Pueden ocurrir determinados casos en los que esto no suceda, y nos encontramos con un ejemplo de un proceso zombi, el cual no pudo finalizar su ejecución por algún motivo, en particular los procesos sin padre, se denominan procesos huérfanos.27
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
fg, bg – permiten manipular y enviar procesos a primer y a segundo plano Sintaxis: fg, bg %número de trabajo Ejemplos: $ bg $ fg %1 Estos comandos son útiles para trabajar en forma interactiva con la línea de comandos. Primero veamos un concepto básico para esto, a la hora de estar utilizando un comando,podemos mandarlo a dormir presionando la combinación de teclas “Control + Z”, la cual manda al proceso a segundo plano. usuario@pc01:~$ sleep 600 [1]+ Stopped sleep 600 usuario@pc01:~$ Como vemos el proceso [1] se identifica con ese número y se detiene. Si ahora deseamos que el proceso se reanude, pero en segundo plano (es decir que no muestre su salida por línea de comandos), usamos el comando bg (background): usuario@pc01:~$ bg %1 [1]+ sleep 600 & usuario@pc01:~$ Como vemos, el comando se muestra con un signo +, esto quiere decir que se está ejecutando nuevamente en segundo plano. Para volver a anexarlo a nuestra consola usamos el comando fb (foreground):28
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
nohup – ejecuta un comando y no permite que reciba más señales de hup, term y kill del sistema. & le indica a la shell que un proceso se ejecute en segundo plano Sintaxis: nohup comando <argumentos> Opciones: version: muestra la versión del comando nohup. help: muestra la ayuda del comando Ejemplos: $ nohup sleep 60 & $ yes > /dev/null & Este comando se utiliza cuando deseamos que un proceso se desprenda de la terminal donde se está ejecutando y además no pueda recibir señales utilizando el identificador que vimos en la diapositiva anterior. Otra posibilidad es el comando & el cual manda a trabajar al proceso a segundo plano, pero nos da la posibilidad de volver a traerlo al frente, como vimos anteriormente usando los comandos fg y bg.29
Clase 5: Administración de Procesos en GNU/Linux Clase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesos
jobs – permite ver los procesos detenidos o en segundo plano en una shell Sintaxis: jobs <opciones> Opciones: l: permite ver el PID de las tareas p: muestra únicamente el PID de las tareas Ejemplos: $ jobs $ jobs l El último comando que veremos es jobs, este nos muestra actualmente los procesos que están en segundo plano y que está sucediendo con ellos. Para el ejemplo anterior el resultado del comando sería: usuario@pc01:~$ jobs [1]+ Running sleep 600 & usuario@pc01:~$30
Clase 1: ¿Dudas? ¿Consultas? Clase 1: ¿Dudas? ¿Consultas?
Información de contacto
http://www.gugler.com.ar [email protected] [email protected] [email protected] http://cursos.gugler.com.ar [email protected] Vía Web: Vía Mail: Versión 1.0 No duden en comunicaste con nosotros por cualquier duda, consulta o sugerencia que deseen realizar. A la brevedad estaremos subiendo los contenidos de la próxima clase.Administración GNU/Linux Nivel I Currícula 1.0