Trabajo Practico N°18
Gestión de procesos Y tareas.
Por: Tomas Ysnardez y Peredo Delvis.
Respuestas
1. Ver procesos con ps:
El comando ps muestra los procesos activos en la terminal actual. Los campos
incluyen PID, TTY (terminal), tiempo de CPU y el comando que ejecutó el
proceso.
2. Ver todos los procesos con ps -e:
ps -e muestra todos los procesos. El proceso con PID 1 es init. Los procesos en
las terminales tty1 a tty6 son generalmente procesos de texto, y en tty7 corre
Xorg, el servidor gráfico.
3. Ver más detalles con ps aux:
ps aux ofrece información detallada, como el usuario, uso de CPU, memoria,
estado del proceso (R, S, Z, etc.).
4. Ver procesos en tiempo real con top:
top muestra información en tiempo real de los procesos activos, con
actualizaciones cada pocos segundos.
5. Filtrar procesos por usuario con top -u:
Usar top -u alumno muestra solo los procesos iniciados por el usuario alumno.
6. Explorar el directorio /proc:
Los procesos tienen un subdirectorio en /proc con su PID. El directorio /proc es
virtual, no ocupa espacio en disco y refleja el estado actual del sistema.
7. Ver archivos de procesos en /proc/<PID>:
Archivos como limits y status en el directorio de un proceso contienen
información sobre recursos y el estado del proceso.
8. Gestionar procesos con yes y kill:
El comando yes repite una cadena indefinidamente. Para detener el proceso, se
puede usar Ctrl + C o el comando kill con el PID del proceso.
9. Matar tareas con Ctrl + C y Ctrl + Z:
o Ctrl + C mata el proceso activo (termina el proceso).
o Ctrl + Z suspende el proceso, pero sigue en memoria, pudiendo reanudarse más
tarde.
o Ctrl + Y suspende temporalmente un proceso hasta que reciba una nueva
entrada.
10. Redirigir salida a /dev/null:
11. /dev/null es un dispositivo especial donde se pueden redirigir salidas de comandos sin
que ocupen espacio en disco, comprobamos las propiedades de /dev/null, que es un
archivo de tipo carácter c, con permisos de lectura y escritura, pero su tamaño es 0, al
redirigir la salida del comando yes a /dev/null. Ejecutar nuevamente yes > /dev/null:
12. Ver el PID del proceso yes y usar kill:
SIGTERM (15): Solicita que el proceso termine de manera ordenada.
SIGKILL (9): Mata el proceso inmediatamente.
Ejecutamos kill -s 15 <PID> para enviar una señal SIGTERM.
13. Enviar una señal de SIGKILL:
Enviamos SIGKILL con kill -s 9 <PID> para detener el proceso de manera
inmediata, sin posibilidad de manejo por parte del proceso.
14. Ejecutar procesos en segundo plano:
yes > /dev/null &
15. Usar jobs para gestionar procesos en segundo plano:
El comando jobs muestra los procesos en segundo plano, indicándonos el
estado de cada uno (ej., Running).
16. Comprobar la jerarquía de procesos con pstree:
Usamos pstree para ver la jerarquía de procesos. Los procesos tienen una
relación padre-hijo. El proceso yes normalmente es hijo de la terminal o shell
que lo lanzó.
17. Ver el árbol de procesos y el uso de CPU con pstree -h y top:
Ejecutamos yes tanto en primer plano como en segundo plano. Con pstree -h
observamos la jerarquía y con top verificamos el porcentaje de CPU que están
utilizando los procesos.
18. Ver los procesos con jobs:
El comando jobs muestra ambas instancias del proceso yes en segundo plano.
La tarea más reciente se marca con un +.
19. Procesos en segundo plano y señales de teclado:
Cuando los procesos están en segundo plano (por ejemplo, con &), no podemos
enviarles señales de teclado como Ctrl + Z o Ctrl + C.
Usamos el comando jobs para ver las tareas en segundo plano, que se
identifican con un número. Usamos fg <número> para traer una tarea al primer
plano, o bg <número> para mantenerla en segundo plano.
20. Matar la segunda tarea (mayor PID):
Para matar una tarea específica, podemos usar el comando top para obtener el
PID y luego kill <PID> para detenerla.
21. Verificar tareas activas con jobs:
Después de matar una tarea, podemos verificar que solo queda una tarea activa
con el comando jobs.
22. Detener un proceso con Ctrl + Z o kill:
Para detener un proceso, se puede usar Ctrl + Z (para suspenderlo
temporalmente) o kill -SIGSTOP <PID> para enviarle una señal SIGSTOP (que
lo detiene). Luego, comprobamos su estado con jobs.
23. Comprobar estado de proceso detenido con jobs:
Usamos jobs para verificar que el proceso está detenido después de enviar la
señal o usar el atajo de teclado.
24. Recuperar una tarea detenida con fg o bg:
Podemos usar fg para traer un proceso detenido al primer plano o bg para
reanudarlo en segundo plano.
25. Detener de nuevo la tarea y moverla a segundo plano:
o Se puede detener un proceso de nuevo con Ctrl + Z o usando kill -SIGSTOP
<PID>. Luego, se mueve a segundo plano con bg.
26. Crear nuevas tareas y probar con bg, fg y kill:
27. Jerarquía de procesos y "padre":
Ejecutamos múltiples instancias del comando yes en segundo plano y
verificamos la jerarquía con pstree. El proceso init (PID 1) es el ancestro directo
de todos los procesos.
Si se cierra la terminal que ejecuta los procesos, estos se terminan.
28. crontab es una herramienta de Linux que permite programar tareas para que se
ejecuten en momentos específicos.
Con pstree:
Usa pstree | grep cron para verificar si el proceso cron aparece en la jerarquía
de procesos.
Con systemctl:
Ejecuta systemctl status cron para ver el estado del servicio. Si está activo,
debería mostrar "active (running)".
Con ps:
Ejecuta ps aux | grep cron para ver si el proceso cron está en ejecución.
Con service:
Usa service cron status si tu sistema no usa systemd para verificar si el servicio
está activo.
29. Para programar tareas en Linux con cron, se edita el archivo /etc/crontab con privilegios
de superusuario. Cada línea en este archivo tiene la siguiente estructura:
minutos - hora - día del mes - mes - día de la semana - usuario - mandato
Para ejecutar un comando cada 5 minutos, tenes que descargar una página con wgety
añades la siguiente línea:
5,10,15,20,25,30,35,40,45,50,55 * * * * alumno cd /home/alumno/Desktop; wget
[Link]
Editar el archivo con sudo nano /etc/crontab.
Insertar la línea de tarea programada.
Guardar y salir con Ctrl + X, luego Y para confirmar.
Verificar que la tarea esté programada con cat /etc/crontab.
30.
*/3 * * * * alumno cd /home/alumno/Desktop; echo "Otra vez aquí" >> aquí
Abre el archivo de cron con permisos de superusuario:
sudo nano /etc/crontab
Inserta la línea en la última parte del archivo.
Guarda y cierra el archivo presionando Ctrl + X, luego Y y Enter.
31.
5,20,35,50 * * * * alumno cd /home/alumno/Desktop; wget [Link]
*/3 * * * * alumno cd /home/alumno/Desktop; echo "Otra vez aquí" >> aquí
0 12 3 6 * alumno mkdir -p /home/alumno/Desktop/Junio3 && echo "Hoy es día 3 de
Junio" > /home/alumno/Desktop/Junio3/log
32. Como ya estamos en un fichero de texto, simplemente se translada la información aca:
Comandos básicos de proceso: ps, top, kill, fg, bg, jobs, pstree.
Redirección de salida: > y >>.
Programación de tareas con cron: sudo nano /etc/crontab, systemctl status cron, cron.
Comandos de directorio y archivo: cd, file, mkdir, echo, wget.