107.2 - Ejercicios: Automatizacion de tareas
Pregunta 1
Cual de las siguientes entradas de crontab ejecuta un script todos los dias a las 3:30 AM?
a) 3 30 * * * /opt/backup.sh
b) 30 3 * * * /opt/backup.sh
c) * * 3 30 * /opt/backup.sh
d) 30 3 * * 1-7 /opt/backup.sh
Respuesta
b) 30 3 * * * /opt/backup.sh
El formato del crontab es: minuto hora dia_mes mes dia_semana comando. En 30 3 * * *: minuto 30, hora 3, cualquier dia del mes (*), cualquier mes (*), cualquier dia de la semana (*). La opcion (a) tiene los campos de minuto y hora invertidos (ejecutaria a las 30:03, que es invalido). La opcion (d) usa 1-7 para el dia de semana, que aunque tambien incluye todos los dias, es redundante respecto a *.
Pregunta 2
Cual es la diferencia principal entre el formato del crontab de usuario (crontab -e) y el archivo /etc/crontab?
a) El crontab del sistema usa 4 campos de tiempo y el de usuario usa 5
b) El crontab del sistema incluye un campo extra que especifica el usuario que ejecuta el comando
c) El crontab de usuario permite variables de entorno y el del sistema no
d) El crontab de usuario acepta la cadena @reboot y el del sistema no
Respuesta
b) El crontab del sistema incluye un campo extra que especifica el usuario que ejecuta el comando
El crontab de usuario tiene 5 campos de tiempo + comando (6 elementos): min hora dia mes dia_sem comando. El crontab del sistema (/etc/crontab y archivos en /etc/cron.d/) tiene 5 campos de tiempo + campo USUARIO + comando (7 elementos): min hora dia mes dia_sem usuario comando. El campo de usuario extra especifica con que cuenta se ejecuta el comando. Los crontabs de usuario se ejecutan como el usuario que los creo; los del sistema pueden especificar cualquier usuario.
Pregunta 3
Un servidor tiene solo el archivo /etc/cron.deny con el contenido ana. Que ocurre si se crea /etc/cron.allow con el contenido sandra?
a) ana es la unica bloqueada y sandra tiene acceso prioritario
b) Solo sandra podra usar cron; todos los demas (incluida ana) seran bloqueados
c) Tanto sandra como ana podran usar cron
d) Se produce un error porque ambos archivos no pueden coexistir
Respuesta
b) Solo sandra podra usar cron; todos los demas (incluida ana) seran bloqueados
La logica de control de acceso de cron es: si /etc/cron.allow existe, SOLO los usuarios listados pueden usar cron (cron.deny se ignora completamente). Si solo existe cron.deny, todos pueden usar cron excepto los listados. Al crear cron.allow con solo sandra, se activa la regla mas restrictiva: unicamente sandra tendra acceso a cron, y cron.deny dejara de tener efecto. cron.allow siempre tiene prioridad absoluta sobre cron.deny.
Pregunta 4
Que es anacron y cual es su principal ventaja sobre cron?
a) Es una version mas rapida de cron con precision de segundos b) Es un complemento de cron que ejecuta tareas perdidas cuando el sistema estaba apagado c) Es un reemplazo completo de cron que permite programar tareas por cualquier usuario d) Es una herramienta grafica para gestionar las entradas de crontab
Respuesta
b) Es un complemento de cron que ejecuta tareas perdidas cuando el sistema estaba apagado
Anacron esta disenado para sistemas que NO estan encendidos 24/7 (laptops, estaciones de trabajo). Si una tarea programada no se ejecuto porque el sistema estaba apagado, anacron la ejecuta cuando el sistema se encienda. Registra la ultima ejecucion en /var/spool/anacron/. A diferencia de cron, su precision minima es en dias (no minutos), solo puede ser ejecutado por root, y no es un daemon permanente sino que es invocado periodicamente. Su configuracion esta en /etc/anacrontab.
Pregunta 5
Que comando de at se utiliza para listar las tareas pendientes y cual para eliminar una tarea con ID 3?
a) at -list y at -remove 3
b) atq (o at -l) y atrm 3 (o at -d 3)
c) at --pending y at --delete 3
d) crontab -l y crontab -r 3
Respuesta
b) atq (o at -l) y atrm 3 (o at -d 3)
atq (equivalente a at -l) lista todas las tareas pendientes mostrando el ID, fecha/hora programada y usuario. atrm 3 (equivalente a at -d 3) elimina la tarea con ID 3. at se usa para tareas unicas (se ejecutan una vez y se eliminan automaticamente). Se puede programar con formatos como at 15:00, at now + 2 hours, at noon tomorrow. batch es similar pero ejecuta cuando la carga del sistema es baja (por defecto < 0.8).
Pregunta 6
Cual de los siguientes es el formato correcto de una linea en /etc/anacrontab?
a) min hora dia mes dia_sem comando
b) periodo retardo identificador comando
c) hora dia_sem usuario comando
d) OnCalendar=daily ExecStart=/ruta/script.sh
Respuesta
b) periodo retardo identificador comando
El formato de /etc/anacrontab tiene 4 campos: periodo (frecuencia en dias, por ejemplo 1 = diario, 7 = semanal, @monthly), retardo (minutos de espera antes de ejecutar, para no sobrecargar al arrancar), identificador (nombre unico usado para registrar la ultima ejecucion en /var/spool/anacron/) y comando (lo que se ejecuta). Ejemplo: 1 5 cron.daily nice run-parts /etc/cron.daily ejecuta las tareas diarias con 5 minutos de retardo.
Pregunta 7
Que diferencia hay entre los directorios /etc/cron.daily/ y /etc/cron.d/?
a) /etc/cron.daily/ contiene archivos crontab y /etc/cron.d/ contiene scripts ejecutables
b) /etc/cron.daily/ contiene scripts ejecutables (sin formato crontab); /etc/cron.d/ contiene archivos en formato crontab (con campo de usuario)
c) Ambos contienen scripts ejecutables que se ejecutan diariamente
d) Ambos contienen archivos en formato crontab con precision de minutos
Respuesta
b) /etc/cron.daily/ contiene scripts ejecutables (sin formato crontab); /etc/cron.d/ contiene archivos en formato crontab (con campo de usuario)
/etc/cron.daily/ (y hourly, weekly, monthly) contiene scripts ejecutables que se ejecutan con run-parts a la frecuencia indicada por el nombre del directorio. Los scripts deben tener permiso de ejecucion y son scripts normales con shebang (no tienen formato crontab). /etc/cron.d/ contiene archivos en formato crontab (igual que /etc/crontab) con el campo de usuario incluido, y permiten programacion con precision de minutos. Son instalados tipicamente por paquetes de software.
Pregunta 8
Que dos archivos se necesitan para crear un timer de systemd y que opcion asegura que se ejecuten tareas perdidas si el sistema estaba apagado?
a) Un archivo .timer y un .service; la opcion Persistent=true
b) Un archivo .cron y un .target; la opcion Recover=yes
c) Un archivo .schedule y un .service; la opcion OnMissed=retry
d) Un archivo .timer y un .conf; la opcion AutoRestart=true
Respuesta
a) Un archivo .timer y un .service; la opcion Persistent=true
Los timers de systemd requieren dos archivos: un .timer (define cuando se ejecuta, con opciones como OnCalendar) y un .service (define que se ejecuta, con ExecStart). La opcion Persistent=true en la seccion [Timer] asegura que si se perdio una ejecucion porque el sistema estaba apagado, se ejecute al encender (similar a anacron). Se gestionan con systemctl enable/start nombre.timer y se listan con systemctl list-timers.
Pregunta 9
Que significa la expresion */15 * * * * en un crontab?
a) Ejecutar a las 15:00 de cada dia b) Ejecutar cada 15 minutos (en los minutos 0, 15, 30 y 45 de cada hora) c) Ejecutar el dia 15 de cada mes d) Ejecutar 15 veces por hora
Respuesta
b) Ejecutar cada 15 minutos (en los minutos 0, 15, 30 y 45 de cada hora)
El operador / indica incremento: */15 en el campo de minutos significa “cada 15 minutos”, ejecutandose en los minutos 0, 15, 30 y 45 de cada hora. Los simbolos especiales en crontab son: * (cualquier valor), , (lista de valores, ej: 1,15,30), - (rango, ej: 1-5), / (incremento, ej: */10). Tambien existen cadenas especiales como @daily (equivalente a 0 0 * * *), @hourly (0 * * * *) y @reboot.
Pregunta 10
Que comando de systemd permite ejecutar una tarea unica programada para dentro de 5 minutos, como alternativa a at?
a) systemctl schedule --in 5m /ruta/script.sh
b) systemd-run --on-active=5m /ruta/script.sh
c) systemd-timer create --delay=5m /ruta/script.sh
d) timedatectl run --after=5m /ruta/script.sh
Respuesta
b) systemd-run --on-active=5m /ruta/script.sh
systemd-run permite ejecutar un comando como una unidad transitoria de systemd. Con --on-active=5m, el comando se ejecutara dentro de 5 minutos. Es una alternativa moderna a at integrada en systemd. Otras opciones incluyen --on-calendar para programar en un momento especifico y --on-boot para ejecutar despues del arranque. Las ventajas sobre at son: los logs se registran en el journal (consultables con journalctl), soporta dependencias de unidades y no requiere archivos allow/deny.
Pregunta 11
Que cadena especial de cron ejecuta una tarea una vez al mes, el dia 1 a medianoche?
a) @daily
b) @monthly
c) @weekly
d) @annually
Respuesta
b) @monthly
La cadena @monthly es equivalente a 0 0 1 * *, lo que significa que se ejecuta el dia 1 de cada mes a medianoche (00:00). Otras cadenas especiales son: @daily o @midnight (equivalente a 0 0 * * *), @weekly (equivalente a 0 0 * * 0, domingo a medianoche), @yearly o @annually (equivalente a 0 0 1 1 *, 1 de enero a medianoche), @hourly (equivalente a 0 * * * *) y @reboot (al iniciar el sistema).
Pregunta 12
En un crontab, que significa la expresion 0 8 * * 1-5?
a) Ejecutar a las 8:00 AM los dias 1 a 5 de cada mes b) Ejecutar a las 8:00 AM de lunes a viernes c) Ejecutar cada 5 minutos a partir de las 8:00 AM d) Ejecutar 5 veces al dia a las 8:00 AM
Respuesta
b) Ejecutar a las 8:00 AM de lunes a viernes
El formato del crontab es minuto hora dia_mes mes dia_semana. En 0 8 * * 1-5: minuto 0, hora 8, cualquier dia del mes, cualquier mes, dias de la semana del 1 (lunes) al 5 (viernes). El campo de dia de la semana usa: 0 y 7 = domingo, 1 = lunes, 2 = martes, …, 6 = sabado. El operador - indica un rango de valores.
Pregunta 13
Donde se almacenan los crontabs de usuario en un sistema Debian?
a) /etc/cron.d/
b) /var/spool/cron/crontabs/
c) /home/usuario/.crontab
d) /etc/crontab.d/
Respuesta
b) /var/spool/cron/crontabs/
Los crontabs de usuario se almacenan en /var/spool/cron/crontabs/ en sistemas Debian/Ubuntu, y en /var/spool/cron/ en sistemas Red Hat/CentOS. Cada usuario tiene un archivo con su nombre de login. Estos archivos no deben editarse directamente; se debe usar el comando crontab -e para editar el crontab del usuario actual o crontab -e -u usuario (como root) para editar el de otro usuario.
Pregunta 14
Que variable de entorno en /etc/crontab define a quien se envian los correos con la salida de los trabajos cron?
a) SENDMAIL
b) CRON_MAIL
c) MAILTO
d) EMAIL
Respuesta
c) MAILTO
La variable MAILTO en un crontab define a quien se envian los correos con la salida (stdout y stderr) de los trabajos cron. Por defecto, la salida se envia al propietario del crontab. Si se establece MAILTO=root, se envia a root. Si se establece MAILTO="" (vacio), se suprime el envio de correo. Otras variables comunes en /etc/crontab son SHELL (shell a usar) y PATH (rutas de busqueda de comandos).
Pregunta 15
Que significa la variable RANDOM_DELAY=45 en /etc/anacrontab?
a) El comando se ejecuta exactamente despues de 45 minutos b) Se anade un retardo aleatorio de 0 a 45 minutos adicionales antes de ejecutar la tarea c) La tarea se repite cada 45 minutos d) Anacron espera 45 segundos entre tareas
Respuesta
b) Se anade un retardo aleatorio de 0 a 45 minutos adicionales antes de ejecutar la tarea
RANDOM_DELAY=45 en /etc/anacrontab indica que se anade un retardo aleatorio de entre 0 y 45 minutos adicional al retardo fijo especificado en cada linea de tarea. Esto evita que todas las tareas de anacron se ejecuten al mismo tiempo al arrancar el sistema, distribuyendo la carga. Otra variable importante es START_HOURS_RANGE, que define el rango de horas en que anacron puede ejecutar tareas.
Pregunta 16
Que hora especial de at representa las 4:00 PM (16:00)?
a) noon
b) midnight
c) teatime
d) afternoon
Respuesta
c) teatime
teatime es una palabra clave especial de at que representa las 16:00 (4:00 PM), la hora tradicional del te britanico. Otras palabras clave son: noon (12:00, mediodia), midnight (00:00, medianoche) y tomorrow (manana). Se puede combinar con otras especificaciones: at teatime tomorrow programaria una tarea para las 16:00 del dia siguiente. Tambien se acepta el formato now + N units donde units puede ser minutes, hours, days o weeks.
Pregunta 17
Que comando elimina completamente el crontab del usuario actual?
a) crontab -d
b) crontab -r
c) crontab -x
d) crontab --delete
Respuesta
b) crontab -r
El comando crontab -r elimina completamente el crontab del usuario actual. Es una operacion irreversible que borra todas las tareas programadas. crontab -e edita el crontab y crontab -l lista su contenido. Para eliminar el crontab de otro usuario (como root) se usa crontab -r -u usuario. Las opciones -d, -x y --delete no son validas para el comando crontab.
Pregunta 18
Que comando de systemd lista todos los timers activos junto con la proxima hora de ejecucion?
a) systemctl status timers
b) systemctl list-timers
c) timedatectl list-timers
d) systemd-analyze timers
Respuesta
b) systemctl list-timers
systemctl list-timers muestra todos los timers activos de systemd, incluyendo la proxima hora de ejecucion (NEXT), la ultima ejecucion (LAST), el tiempo restante (LEFT), el tiempo transcurrido (PASSED) y la unidad de servicio asociada (UNIT/ACTIVATES). Se puede usar systemctl list-timers --all para ver tambien los timers inactivos. Los timers se habilitan con systemctl enable nombre.timer y se inician con systemctl start nombre.timer.
Pregunta 19
En un timer de systemd, que opcion OnCalendar programa la ejecucion para todos los dias a las 2:30 AM?
a) OnCalendar=02:30
b) OnCalendar=*-*-* 02:30:00
c) OnCalendar=daily 02:30
d) OnCalendar=2:30 AM
Respuesta
b) OnCalendar=*-*-* 02:30:00
El formato de OnCalendar en timers de systemd sigue el patron DiaSem Ano-Mes-Dia Hora:Min:Seg. *-*-* 02:30:00 significa cualquier dia de la semana, cualquier ano, cualquier mes, cualquier dia del mes, a las 02:30:00. Tambien se aceptan cadenas predefinidas como daily (equivalente a *-*-* 00:00:00, medianoche), weekly (lunes a medianoche) y monthly (dia 1 a medianoche). Se puede verificar el formato con systemd-analyze calendar "*-*-* 02:30:00".
Pregunta 20
Que diferencia hay entre at y batch?
a) at ejecuta tareas recurrentes y batch tareas unicas
b) at ejecuta en un momento especifico y batch ejecuta cuando la carga del sistema es baja
c) at es para usuarios normales y batch solo para root
d) No hay diferencia, son el mismo comando
Respuesta
b) at ejecuta en un momento especifico y batch ejecuta cuando la carga del sistema es baja
at programa la ejecucion de un comando en un momento especifico del futuro (por ejemplo, at 15:00 o at now + 2 hours). batch tambien programa una tarea unica, pero la ejecuta cuando la carga del sistema (load average) es baja (por defecto inferior a 0.8, configurable con atd -l). Ambos ejecutan la tarea una sola vez. batch es util para tareas pesadas que no deben competir con otros procesos.
Pregunta 21
Escribe el comando para editar el crontab del usuario actual.
Respuesta
crontab -e
El comando crontab -e abre el crontab del usuario actual en el editor de texto predeterminado (definido por la variable VISUAL o EDITOR). Cuando se guarda y cierra el editor, cron instala automaticamente el nuevo crontab. Para editar el crontab de otro usuario (como root): crontab -e -u usuario. Para listar el contenido: crontab -l. Para eliminarlo: crontab -r.
Pregunta 22
Escribe el comando para listar las tareas pendientes programadas con at.
Respuesta
atq
El comando atq (equivalente a at -l) muestra la lista de tareas pendientes programadas con at, incluyendo el ID de la tarea, la fecha y hora programada, la cola y el usuario. Para eliminar una tarea se usa atrm ID (equivalente a at -d ID). Las tareas se ejecutan una sola vez y se eliminan automaticamente despues de ejecutarse.
Pregunta 23
Escribe el comando para programar una tarea con at que se ejecute dentro de 30 minutos.
Respuesta
at now + 30 minutes
El comando at now + 30 minutes abre un prompt interactivo donde se pueden escribir los comandos a ejecutar (se finaliza con Ctrl+D). El formato now + N unidad acepta: minutes, hours, days y weeks. Tambien se pueden usar horas fijas (at 15:00), palabras clave (at noon, at midnight, at teatime) y fechas (at 14:00 2026-12-25). Para leer comandos desde un archivo: at now + 30 minutes -f script.sh.
Pregunta 24
Escribe el comando para listar los timers de systemd activos, incluyendo los inactivos.
Respuesta
systemctl list-timers —all
El comando systemctl list-timers --all muestra todos los timers de systemd, tanto activos como inactivos. Sin la opcion --all, solo se muestran los timers activos. La salida incluye columnas como NEXT (proxima ejecucion), LEFT (tiempo restante), LAST (ultima ejecucion), PASSED (tiempo desde la ultima) y UNIT (unidad de servicio asociada).
Pregunta 25
Escribe el comando para eliminar la tarea numero 5 de la cola de at.
Respuesta
atrm 5
El comando atrm 5 (equivalente a at -d 5) elimina la tarea con ID 5 de la cola de at. El ID de cada tarea se puede consultar con atq (o at -l). Solo el propietario de la tarea o root puede eliminar una tarea programada. El control de acceso a at se gestiona con los archivos /etc/at.allow y /etc/at.deny, con la misma logica que cron.allow y cron.deny.