Nivel I
Curso de AdministraciónGNU/Linux
Facultad de Ciencia y Tecnología – Oro Verde - 2009Facultad de Ciencia y Tecnología – Oro Verde - 2009
1
Nivel I
Curso de AdministraciónGNU/Linux
Facultad de Ciencia y Tecnología – Oro Verde - 2009Facultad 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Capítulo 3: Administración de ProcesosCapí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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Teoría de ProcesosClase 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.
Cada proceso que se inicia es referenciado con un número de identificación único conocido como Process ID PID, que es siempre un entero positivo. Prácticamente todo lo que se está ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente gráfico que puede tener múltiples procesos, etc. La excepción a lo anterior es el kernel en si, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a través de llamadas al sistema pueden tener acceso.
4
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Teoría de ProcesosClase 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, oque se deba esperar algún suceso antes de continuar, como una operación de Entrada/Salida. Espor esto que se necesita un estado donde los procesos permanezcan esperando la realización de laoperación de Entrada/Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divideentonces al estado No ejecución en dos estados: Listo y Espera. Se agregan además un estadoNuevo 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 cortoplazo así lo disponga.● Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como lafinalizació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. Engeneral los procesos que se encuentran en este estado todavía no fueron cargados en la memoriaprincipal.● 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 losestados Espera y Listo tienen ambos colas de espera. Cuando un nuevo proceso es admitido por elsistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede seruna cola FIFO. Cuando se da un suceso se pasan a la cola de listos los procesos que esperabanpor ese suceso.Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantenervarias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál esel 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Teoría de ProcesosClase 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Teoría de ProcesosClase 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 elsistema 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 sirvacomo 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 losrecursos del sistema sólo cuando existe un PCB activo asociado a él. El bloque de control deproceso es una estructura de datos con campos para registrar los diferentes aspectos de laejecución del proceso y de la utilización de recursos. La información almacenada en un PCB incluyetí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 elconjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Sudenominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra deestado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes(BATCH) y los sistemas interactivos.
7
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Teoría de ProcesosClase 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 tareas simultá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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 bash
Cuando el núcleo Linux inicia llega un momento en que se debe ejecutar el primer programa, el cualse encarga de leer los scripts de inicio y dejar el sistema listo para comenzar a trabajar. Este primerproceso 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 cadaterminal 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ásprocesos, esto quiere decir a su vez que todos los demás procesos son creados por init, por endeson un fork del mismo.
9
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 1Proceso 1
Proceso 2Proceso 2
Proceso 3Proceso 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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ñalespecifica 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 losprocesos.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 paraponer reanudarlo después.
18 SIGCONT > Reanuda un proceso suspendido previamente por la señal SIGTSTP.
11
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Gestión de Procesos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 tengael sistema operativo, así por ejemplo tanto Windows 95 como OS/2 son sistemas multiproceso ymonousuario, mientras que Linux se caracteriza por ser un sistema multiproceso y multiusuario,
12
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Colas de Procesos
Clase 5: Administración de Procesos en GNU/LinuxClase 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Herramientas para trabajar con procesos
Clase 5: Administración de Procesos en GNU/LinuxClase 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 procesox: muestra los procesos que no se ejecutan en una terminalEjemplos:
$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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesosExaminando 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 reiniciado● Z zombie: difunto, proceso que por alguna razón no terminó de manera
correcta, no debe haber procesos zombies● D uninterruptible sleep: son procesos generalmente asociados a acciones de
IO del sistema● X dead: muerto, proceso terminado pero que sigue apareciendo, igual que los
Z no deberían verse nunca
16
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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ánejecutándose en nuestra computadora y visualizar la cantidad de recursos queconsumen. Esto es útil en ambientes multiusuario a la hora de determinar si unaaplicación está consumiendo demasiado tiempo de CPU, por ejemplo, y causando lalentitud del sistema.
17
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 ayudaF6 – 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 ‘>‘.
● F7 Nice: Los procesos tienen una prioridad en su lucha por recibir la atención de la CPU. Con esta opción decrementamos dicha prioridad del proceso seleccionado. También accesible mediante las teclas ‘‘ y ‘]‘.
● F8 Nice+: Lo mismo que la anterior pero incrementa la prioridad. También accesible mediante las teclas ‘+‘ y ‘[‘.
● F9 Kill: Mata el proceso seleccionado. También accesible mediante la tecla ‘k‘.● F10 Quit: Se sale de htop. También accesible mediante la tecla ‘q‘.
18
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 9873kill SIGKILL 3482
Como mencionábamos antes, la forma que tiene tanto el sistema operativo como elusuario con los procesos es a través de señales. Kill es el comando que nos permiterealizar esta tarea, especificando a que proceso nos queremos referir (mediante suidentificador 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 formanormal) o 9 que hace que el proceso se termine de forma inmediata sin importar susrecursos asociados ni su estado.
19
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 kdekillall 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 procesosdesde la línea de comandos es asignarle prioridades. La prioridad se identifica con unnúmero entre 20 y 20, siendo los números negativos los de mayor prioridad (20Por 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 gestionanmemoria, acceso a dispositivos de almacenamiento, periféricos y demás que tienenmayor importancia), pero podemos alterar esto con el comando nice, el cual nos permitemodificar 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 laprioridad de un proceso en ejecución, utilizaremos el comando renice, el cual veremos acontinuación.
21
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 prioridadg 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 deun proceso en tiempo de ejecución, es decir, cuando este se encuentra ejecutándose oen alguno de los estados vistos anteriormente. Además permite cambiar el dueño ygrupo de un proceso, esto es importante ya que un usuario no tiene permiso paraeliminar procesos de otros usuarios, exceptuando al root o administrador, el cual, comovimos antes, tiene control total sobre el sistema.
22
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 computadorapor parte del sistema operativo y sus demás programas. Debemos aclarar que el núcleose apropia de la memoria ram en la medida en que puede, ya que se supone el únicosistema 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 memoriaque vemos en estas estadísticas, sino guiarnos por el comando htop, el cual nosmuestra efectivamente y en tiempo real para ver el uso actual de la memoria por partede 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 cachedMem: 2048 1996 51 0 599 364/+ buffers/cache: 1032 1015Swap: 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
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 llevaencendida la computadora, la cantidad de usuarios que están logueados y trabajandoactualmente y la carga del CPU del equipo. Toda esta información se obtiene del sistema de archivos /proc.
24
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 utilizahelp: 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, peropuede utilizarse para muchas cosas. Lo que nos permite es ver la salida de un comandoy “refrescar” (volver a dibujar en pantalla) la salida de este comando cada cierto períodode tiempo (por defecto cada 2 segundos). Se puede utilizar para ver el progreso decopia de un archivo, para verificar conexiones, para mostrar el estado de procesos yotras cosas.
25
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 determinadascaracterísticas, pero pgrep trabaja con procesos, como grep trabajaba con archivos ocadenas de texto. Podemos visualizar todos los archivos de un grupo o de un usuariopor ejemplo.
26
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 modode á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 detodos los demás. Esto también lo podemos visualizar con el comando htop comoespecificamos anteriormente.Cabe aclarar que en la teoría de procesos, al “matar” (enviar una señal para que elproceso 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 procesoshuérfanos.
27
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 ahoradeseamos que el proceso se reanude, pero en segundo plano (es decir que no muestresu 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 consolausamos el comando fb (foreground):
usuario@pc01:~$ fg %1
sleep 600
Vemos el comando y volvemos a interactuar con el mismo, en este caso sleep no realizanada sino que espera 600 segundos y luego finaliza su ejecución.
28
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 5: Administración de Procesos en GNU/Linux
Herramientas para la administración de procesosnohup – 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 terminaldonde se está ejecutando y además no pueda recibir señales utilizando el identificadorque 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 usandolos comandos fg y bg.
29
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 5: Administración de Procesos en GNU/LinuxClase 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 tareasp: 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 elresultado del comando sería:
usuario@pc01:~$ jobs
[1]+ Running sleep 600 &
usuario@pc01:~$
30
Grupo UniversitarioGrupo Universitariode GNU/Linux de Entre Ríosde GNU/Linux de Entre Ríos
Clase 1: ¿Dudas? ¿Consultas?Clase 1: ¿Dudas? ¿Consultas?
Información de contacto
http://www.gugler.com.ar
http://cursos.gugler.com.ar
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 ICurrícula 1.0
Copyright® Gugler 2009
Top Related