Laboratorio cron, at, systemd
Objetivos
- Programar tareas diferidas con at para ejecutar comandos en momentos específicos.
- Configurar trabajos recurrentes con crontab para automatizar procesos del usuario.
- Implementar trabajos del sistema con cron y temporizadores systemd.
- Verificar la ejecución de tareas programadas y gestionar su administración.
- Optimizar la automatización de procesos para mejorar la eficiencia del sistema.
Entorno Inicial
- Usuario: student
- Máquina: servera
- Contraseña inicial: student
- Herramientas utilizadas: Shell Bash y utilidades básicas de Linux.
Pasos del Laboratorio
Prerequisitos
- Inicio de sesión
- Inicia sesión en la máquina
serveradesdebastioncomo el usuariostudentutilizando la llave privada proporcionada:ssh student-#-servera
- Inicia sesión en la máquina
Parte 1: Programación de Trabajos con at
-
Instalar comando at
-
Instala el paquete utilizando dnf:
sudo dnf install -y at -
Usa systemctl para habilitar el servicio:
sudo systemctl enable --now atd
-
-
Programar un trabajo para ejecutarse en dos minutos
- Usa at para programar la ejecución del comando date, guardando la salida en /home/student/myjob.txt:
echo "date >> /home/student/myjob.txt" | at now +2 min - Salida esperada:
warning: commands will be executed using /bin/sh job 1 at Thu Feb 16 18:51:16 2023
- Usa at para programar la ejecución del comando date, guardando la salida en /home/student/myjob.txt:
-
Verificar los trabajos programados
- Usa atq para listar los trabajos pendientes:
atq - Ejemplo de salida:
1 Thu Feb 16 18:51:16 2023 a student
- Usa atq para listar los trabajos pendientes:
-
Monitorear la cola de trabajos en tiempo real
- Usa watch atq para observar la cola de trabajos diferidos:
watch atq - Presiona Ctrl + C para salir del comando después de que el trabajo se haya ejecutado.
- Usa watch atq para observar la cola de trabajos diferidos:
-
Verificar la ejecución del trabajo programado
- Usa cat para comprobar que la salida del comando date se guardó correctamente en el archivo:
cat /home/student/myjob.txt - Ejemplo de salida:
Thu Feb 16 06:51:16 PM EDT 2023
- Usa cat para comprobar que la salida del comando date se guardó correctamente en el archivo:
Parte 2: Programación de Trabajos Recurrentes con crontab
-
Determinar el rango de días para la ejecución del trabajo
- Usa date para obtener la fecha y hora actuales:
date - Ejemplo de salida:
Wed Mar 15 07:33:01 PM EDT 2025 - Usa date -d "last day" +%a para obtener el día anterior:
date -d "last day" +%a - Ejemplo de salida:
Tue - Usa date -d "next day" +%a para obtener el día siguiente:
date -d "next day" +%a - Ejemplo de salida:
Thu
- Usa date para obtener la fecha y hora actuales:
-
Programar un trabajo recurrente con crontab
- Usa crontab -e para abrir el archivo de configuración de crontab:
crontab -e - Agrega la siguiente línea para ejecutar date cada dos minutos, solo desde el día anterior hasta el día siguiente:
*/2 * * * Tue-Thu /usr/bin/date >> /home/student/my_first_cron_job.txt - Guarda los cambios (:wq).
- Usa crontab -e para abrir el archivo de configuración de crontab:
-
Verificar que el trabajo recurrente está instalado
- Usa crontab -l para listar los trabajos programados:
crontab -l - Ejemplo de salida:
*/2 * * * Tue-Thu /usr/bin/date >> /home/student/my_first_cron_job.txt
- Usa crontab -l para listar los trabajos programados:
-
Esperar la ejecución del trabajo recurrente
- Usa while para esperar hasta que el archivo my_first_cron_job.txt sea creado:
while ! test -f /home/student/my_first_cron_job.txt; do sleep 1s; done
- Usa while para esperar hasta que el archivo my_first_cron_job.txt sea creado:
-
Verificar el contenido del archivo de salida
- Usa cat para comprobar que el comando date se ejecutó correctamente:
cat /home/student/my_first_cron_job.txt - Ejemplo de salida:
Wed Mar 15 07:40:01 PM EDT 2025
- Usa cat para comprobar que el comando date se ejecutó correctamente:
-
Eliminar el trabajo recurrente
- Usa crontab -r para eliminar todos los trabajos programados del usuario student:
crontab -r - Verifica que no haya trabajos programados:
crontab -l - Salida esperada:
no crontab for student
- Usa crontab -r para eliminar todos los trabajos programados del usuario student:
Parte 3: Programación de Trabajos del Sistema con cron y Temporizadores systemd
-
Cambiar a superusuario
- Usa el comando sudo -i para obtener privilegios de root:
sudo -i
- Usa el comando sudo -i para obtener privilegios de root:
-
Programar un trabajo del sistema recurrente para contar usuarios activos
- Usa vim para crear el script /etc/cron.daily/usercount:
vim /etc/cron.daily/usercount - Agrega el siguiente contenido:
#!/bin/bash USERCOUNT=$(w -h | wc -l) logger "There are currently ${USERCOUNT} active users" - Guarda los cambios (:wq).
- Usa vim para crear el script /etc/cron.daily/usercount:
-
Hacer el script ejecutable
- Usa chmod para otorgar permisos de ejecución:
chmod +x /etc/cron.daily/usercount
- Usa chmod para otorgar permisos de ejecución:
-
Instalar el paquete sysstat
- Usa dnf para instalar sysstat, que recopila datos de actividad del sistema:
dnf install sysstat -y
- Usa dnf para instalar sysstat, que recopila datos de actividad del sistema:
-
Modificar la unidad de temporizador systemd para recopilar datos cada dos minutos
- Copia el archivo de configuración original:
cp /usr/lib/systemd/system/sysstat-collect.timer /etc/systemd/system/sysstat-collect.timer - Usa vim para editar /etc/systemd/system/sysstat-collect.timer:
vim /etc/systemd/system/sysstat-collect.timer - Reemplaza todas las apariciones de 10 minutes con 2 minutes.
- Guarda los cambios (:wq).
- Copia el archivo de configuración original:
-
Recargar la configuración de systemd
- Usa systemctl para aplicar los cambios:
systemctl daemon-reload
- Usa systemctl para aplicar los cambios:
-
Activar el temporizador sysstat-collect.timer
- Usa systemctl para habilitar y ejecutar el temporizador:
systemctl enable --now sysstat-collect.timer
- Usa systemctl para habilitar y ejecutar el temporizador:
-
Esperar la creación del archivo de actividad del sistema
- Usa un bucle while para verificar la existencia del archivo en /var/log/sa:
while [ $(ls /var/log/sa | wc -l) -eq 0 ]; do sleep 1s; done
- Usa un bucle while para verificar la existencia del archivo en /var/log/sa:
-
Verificar que el archivo se ha actualizado en los últimos dos minutos
- Usa ls -l para comprobar la fecha de modificación:
ls -l /var/log/sa - Usa date para comparar la hora actual con la del archivo:
date
- Usa ls -l para comprobar la fecha de modificación:
-
Salir de
serveray volver albastion- Salir de la sesión remota:
exit
- Salir de la sesión remota:
Resultados Esperados
- Los participantes podrán programar tareas únicas con at y gestionar su ejecución.
- Se configurarán trabajos recurrentes con crontab, asegurando la automatización de procesos.
- Se establecerán trabajos del sistema con cron y temporizadores systemd para tareas administrativas.
- Se aplicarán técnicas de monitoreo y gestión de trabajos programados.
- Se comprenderá la importancia de la automatización en la administración de sistemas Linux.