2. Práctica de Procesos Francisco Javier Gavilán Escriche
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
1
3. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
2
4. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
3
5. Práctica de Procesos Francisco Javier Gavilán Escriche
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:
4
6. Práctica de Procesos Francisco Javier Gavilán Escriche
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
5
7. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
6
8. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
7
9. Práctica de Procesos Francisco Javier Gavilán Escriche
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)
8
10. Práctica de Procesos Francisco Javier Gavilán Escriche
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:
9
11. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
10
12. Práctica de Procesos Francisco Javier Gavilán Escriche
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:
11
13. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
12
14. Práctica de Procesos Francisco Javier Gavilán Escriche
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:
13
15. Práctica de Procesos Francisco Javier Gavilán Escriche
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.
14