Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de...

31
 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

Transcript of Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de...

Page 1: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

Nivel I

Curso de AdministraciónGNU/Linux

Facultad de Ciencia y Tecnología – Oro Verde - 2009Facultad de Ciencia y Tecnología – Oro Verde - 2009

Page 2: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 3: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 4: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 5: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 6: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 7: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 8: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 9: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 10: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 11: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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. 

Page 12: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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,

Page 13: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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

Page 14: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 15: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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 ­­.

Page 16: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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

Page 17: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 18: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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‘.

Page 19: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 20: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 21: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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 apt­get 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.

Page 22: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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 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 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.

Page 23: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 24: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 25: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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 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, 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.

Page 26: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 27: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 28: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 29: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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.

Page 30: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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 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 elresultado del comando sería:

usuario@pc01:~$ jobs

[1]+ Running sleep 600 &

usuario@pc01:~$

Page 31: Curso de Administración GNU/Linux Nivel I · 2012. 5. 23. · El Curso de Administración de GNU/Linux en su nivel I pretende formar profesionales en el ámbito ... sistema en cualquier

   

 

    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

[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 ICurrícula 1.0

Copyright® Gugler 2009