practica de procesos en linux

15
Práctica de Procesos Administración de Sistemas Operativos Francisco Javier Gavilán Escriche 2ºA

Upload: terrafx9

Post on 13-Jun-2015

4.982 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Practica de procesos en Linux

Práctica de Procesos

Administración de Sistemas Operativos

Francisco Javier Gavilán Escriche 2ºA

Page 2: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

1 1

Indice

Objetivos .......................................................................................................................................... 2

Punto 1 ............................................................................................................................................. 4

Punto 2 ............................................................................................................................................. 4

Punto 3 ............................................................................................................................................. 6

Punto 4 ............................................................................................................................................. 6

Punto 5 ........................................................................................................................................... 11

Punto 6 ........................................................................................................................................... 12

Punto 7 ........................................................................................................................................... 13

Punto 8 ........................................................................................................................................... 14

Page 3: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

2 2

Objetivos

1. Estudia la orden uptime:

¿Cuánto tiempo lleva en marcha el sistema? ¿Cuántos usuarios hay trabajando? ¿Qué orden ofrece en su cabecera la misma información que uptime?

2. La orden pstree muestra el árbol de procesos que hay en ejecución. Comprueba haciendo uso de la orden ps -la y de los valores “PID” y “PPID” mostrados para cada proceso, que efectivamente los procesos son padre e hijo.

3. En muchos casos nos interesará “cortar columnas”. Recuerda el uso de tr y cut. Por ejemplo, ¿cómo funciona esta instrucción? ps aux | tr -s ’ ’ | cut -f 2,11 -d ’ ’ 4. Crea el fichero /tmp/bucle con el siguiente contenido: #!/bin/bash echo ’nada’ > /dev/null exec /tmp/bucle

Ejecuta la orden top en una terminal y comprueba el estado del sistema, a continuación lanza /tmp/bucle en otra. Observa cómo cambia el estado del sistema al lanzar el script. En una tercera terminal, comprueba con ps los procesos en ejecución.

Usando la combinación de teclas “Control-Z” para el proceso bucle. Una vez parado comprueba que la información mostrada por top va cambiando, hasta llegar un momento en el que no muestra información sobre dicho proceso. Fíjate que ha aumentado el número de procesos parados.

Reinicia el proceso con la orden fg y comprueba que vuelve a aparecer la información sobre el proceso.

Observa si mientras está en ejecución ese proceso cambia la carga media del sistema.

¿Por qué aparece siempre el proceso bucle con el mismo PID si se lanza a sí mismo una y otra vez durante su ejecución?

Cambia la velocidad de referesco de top a 2s. Desde el top, cambia la prioridad del proceso, dándole un valor menor, por ejemplo

10. Usando la orden nice lanza otro proceso bucle con la prioridad de 5. Observa que la CPU se le asignará más al segundo bucle lanzado, que tiene más

prioridad, que al primero que se ejecutó, que tiene menos prioridad. Asigna mediante renice una prioridad de 19 al bucle que lanzaste con prioridad 5.

¿Cómo afecta esto a la ejecución de los dos procesos? Desde el top mata el bucle con prioridad 10. Fíjate que ahora, a pesar de que el que

queda tiene prioridad 19, se le asigna más de la CPU que antes. Haciendo uso de la orden kill, para el proceso bucle que aún queda en ejecución.

Despu s usando tambi n kill rean dalo y finalmente elim nalo.

Page 4: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

3 3

5. Estudia el uso que se hace de la CPU, con mpstat, y el uso de memoria, con vmstat, que están haciendo en este momento los procesos en ejecución. Para que el sistema tenga tareas a realizar y acceso al disco al mismo tiempo, ejecuta la siguiente orden: find / -type f -exec cat {} > /dev/null \;

6. Prueba las opciones de ulimit. Ten en cuenta que una vez establecido un límite con ulimit no es posible establecer un nuevo límite mejor, para cambiar a un valor mejor es necesario finalizar ese intérprete de órdenes. Recuerda que los valores establecidos son por intérprete de órdenes.

Limita el número de ficheros abiertos a 2. A continuación ejecuta la orden “ls”. ¿Qué está sucediendo?

Limita el tamaño del fichero core a 2K. Limita el número de procesos en ejecución a 1. Ejecuta a continuación una orden,

por ejemplo, ps. ¿Qué está sucediendo? ¿Qué podemos hacer para que tengan efecto siempre sobre cierto usuario? (Pista:

ficheros profile).

7. Ordenes: at, atq, atrm. (Para poder recibir un correo cuando una orden programada con at se ejecute es necesario que esté en ejecución el demonio sendmail).

Si el demonio atd no está en ejecución, lánzalo para poder hacer este ejercicio. Programa con la orden at un “ls /” dentro de unos minutos. Comprueba cómo te

avisa de que la orden ha sido ejecutada. Programa con la orden at un “ls /tmp > $HOME/salidatmp” dentro de unos minutos.

Comprueba cómo te avisa de que la orden ha sido ejecutada. Utiliza la orden atq para averiguar que hay en la cola y atrm para eliminar trabajos

que hayan sido encolados.

8. Con la orden free averigua el estado de la memoria principal y de intercambio del sistema en este momento.

Page 5: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

4 4

Punto 1

Estudia la orden uptime:

¿Cuánto tiempo lleva en marcha el sistema?

Lleva conectado 23 minutos al sistema

¿Cuántos usuarios hay trabajando?

Como se puede ver en la imagen están trabajando 2 usuarios, aunque con la orden who

podríamos concretar quienes son.

¿Qué orden ofrece en su cabecera la misma información que uptime?

El comando TOP

Aunque también con la orden w puede visualizarse en pantalla el tiempo que lleva cada usuario

conectado al sistema.

Punto 2

La orden pstree muestra el árbol de procesos que hay en ejecución. Comprueba haciendo uso de

la orden ps la y de los valores “PID” y “PPID” mostrados para cada proceso, que efectivamente

los procesos son padre e hijo.

En un terminal lanzado un gedit con “gedit &” y me indica lo siguiente:

Page 6: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

5 5

Ahora hacemos un ps la para ver los procesos que están en marcha en el sistema y como vemos

por ejemplo el PID de gedit es 1859 y PPID (numero que hace mención a su proceso padre) es

1806, si buscamos cual es en el sistema su proceso padre vemos que bash tiene el PID 1806.

Ahora mediante un pstree en otro terminal comprobamos que el proceso bash es el padre del

proceso gedit

Page 7: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

6 6

Punto 3

En muchos casos nos interesará “cortar columnas”. Recuerda el uso de tr y cut. Por ejemplo,

¿cómo funciona esta instrucción? ps aux | tr -s ‟ ‟ | cut -f 2,11 -d ‟ ‟

Ps aux Listarte los procesos de todos los usuarios

Tr –s „ „ elimina los espacios en blanco duplicados

Cut –f Corta la información por las columnas que nos interesa obtener información

Punto 4

Crea el fichero /tmp/bucle con el siguiente contenido:

#!/bin/bash

echo ‟nada‟ > /dev/null

exec /tmp/bucle

Ejecuta la orden top en una terminal y comprueba el estado del sistema, a continuación lanza

/tmp/bucle en otra. Observa cómo cambia el estado del sistema al lanzar el script. En una

tercera terminal, comprueba con ps los procesos en ejecución.

Page 8: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

7 7

Primero lanzamos el comando top, después vamos a lanzar el proceso con un sh /tmp/bucle (si

no funciona dar permisos a la carpeta tmp), acto seguido volvemos a consultar el top y vemos

como se ha ejecutado el bucle y está ejecutándose como un proceso.

Usando la combinación de teclas “Control-Z” para el proceso bucle. Una vez parado

comprueba que la información mostrada por top va cambiando, hasta llegar un momento en

el que no muestra información sobre dicho proceso. Fíjate que ha aumentado el número de

procesos parados.

Una vez que paramos con CTRL+Z se detiene el bucle y aumenta el número de procesos parados

Reinicia el proceso con la orden fg y comprueba que vuelve a aparecer la información sobre

el proceso.

Page 9: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

8 8

Observa si mientras está en ejecución ese proceso cambia la carga media del sistema.

Si aumenta

¿Por qué aparece siempre el proceso bucle con el mismo PID si se lanza a sí mismo una y

otra vez durante su ejecución?

Aparece siempre con el mismo PID debido a que lo que hacemos es parar el proceso y no

matarlo.

Cambia la velocidad de refresco de top a 2s.

Cuando estemos ejecutando el comando top le damos a la tecla d y acto seguido le metemos el

tiempo de refresco que serán 2 segundos.

Desde el top, cambia la prioridad del proceso, dándole un valor menor, por ejemplo 10.

Ejecutando el top le damos a la r y metemos el PID del proceso (en este caso el PID

perteneciente al bucle anterior es el 11403)

Page 10: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

9 9

Ahora establecemos para que tenga prioridad 10

Y más tarde vemos como el NI ha aumentado a 10

Usando la orden nice lanza otro proceso bucle con la prioridad de 5.

En un terminal introducimos la siguiente orden:

Page 11: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

10 10

Observa que la CPU se le asignará más al segundo bucle lanzado, que tiene más prioridad,

que al primero que se ejecutó, que tiene menos prioridad.

En el comando top ejecutado anteriormente se puede observar cómo se ha creado un nuevo

proceso llamado bucle con el NI a 5

Asigna mediante renice una prioridad de 19 al bucle que lanzaste con prioridad 5. ¿Cómo

afecta esto a la ejecución de los dos procesos?

Desde el top mata el bucle con prioridad 10. Fíjate que ahora, a pesar de que el que queda

tiene prioridad 19, se le asigna más de la CPU que antes.

En la pantalla con el comando top ejecutado le damos a la k y nos pedirá el número de PID que

queremos matar, justo después le metemos el número 15 para que mate el proceso y listo.

Haciendo uso de la orden kill, para el proceso bucle que aún queda en ejecución. Después,

usando tambi n kill rean dalo y, finalmente, elim nalo.

Kill -19 Para parar el proceso

Kill -18 Para reanudar el proceso

Posteriormente con un Kill -9 matamos el proceso.

Page 12: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

11 11

Punto 5

Estudia el uso que se hace de la CPU, con mpstat, y el uso de memoria, con vmstat, que están

haciendo en este momento los procesos en ejecución. Para que el sistema tenga tareas a realizar y

acceso al disco al mismo tiempo, ejecuta la siguiente orden: find / -type f -exec cat {} > /dev/null

\;

Primero tenemos que instalar sisstat

Ahora lo que vamos a hacer es un mpstat y vmstat del sistema antes de ejecutar la orden del

enunciado y otro justamente después para ver los cambios que se han producido.

Antes:

Page 13: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

12 12

Después:

Punto 6

Prueba las opciones de ulimit. Ten en cuenta que una vez establecido un límite con ulimit no es

posible establecer un nuevo límite mejor, para cambiar a un valor mejor es necesario finalizar

ese intérprete de órdenes. Recuerda que los valores establecidos son por intérprete de órdenes.

Limita el n mero de ficheros abiertos a 2. A continuación ejecuta la orden “ls”. ¿Qu está

sucediendo?

Limita el tamaño del fichero core a 2K.

ulimit -c 2 nombre_del_archivo_core

Limita el número de procesos en ejecución a 1. Ejecuta a continuación una orden, por

ejemplo, ps. ¿Qué está sucediendo?

Pues que limitamos el número de procesos abiertos a 1 mediante la orden ulimit –n 1

¿Qué podemos hacer para que tengan efecto siempre sobre cierto usuario? (Pista: ficheros

profile).

Mediante el uso de un script en el .profile del usuario que queramos le indicaremos mediante un

ulimit el número de procesos que queramos tener abiertos simultáneamente.

Page 14: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

13 13

Punto 7

Ordenes: at, atq, atrm. (Para poder recibir un correo cuando una orden programada con at se

ejecute es necesario que esté en ejecución el demonio sendmail).

Si el demonio atd no está en ejecución, lánzalo para poder hacer este ejercicio.

Programa con la orden at un “ls /” dentro de unos minutos. Comprueba cómo te avisa de que

la orden ha sido ejecutada.

Una vez tengamos la orden ls / puesta en el terminal AT tendremos que darle a CTRL+D

Programa con la orden at un “ls /tmp > $HOME/salidatmp” dentro de unos minutos.

Comprueba cómo te avisa de que la orden ha sido ejecutada.

Comprobación que se ha creado el archivo salidatmp:

Page 15: Practica de procesos en Linux

Práctica de Procesos Francisco Javier Gavilán Escriche

14 14

Utiliza la orden atq para averiguar que hay en la cola y atrm para eliminar trabajos que hayan

sido encolados.

Punto 8

Con la orden free averigua el estado de la memoria principal y de intercambio del sistema en este

momento.