Programacion de Tareas
Capítulo 2
1. Introducción a los Trabajos Diferidos
En Linux, los trabajos diferidos son como una lista de tareas pendientes con temporizador. El sistema mantiene estas tareas y las ejecuta en el momento especificado.
- Tareas diferidas: Como poner una alarma para más tarde
- Tareas recurrentes de usuario: Como configurar un recordatorio diario
- Tareas recurrentes del sistema: Como programar el mantenimiento automático
2. Comando at y sus Opciones
El comando at es la herramienta principal para programar trabajos diferidos:
at -loatq: Lista todos los trabajos pendientesat -c [número]: Muestra el contenido del trabajo especificadoat -d [número]oatrm [número]: Elimina un trabajo programadoat -m: Envía un email cuando el trabajo se complete
Ejemplo Práctico Completo:
-
Programar un trabajo para ejecutarse en 5 minutos
at now + 5 minutes echo "Ejecutando tarea programada" > /home/student/task_output.txt -
Verificar los trabajos pendientes
atq -
Ver el contenido del trabajo número 1
at -c 1
3. Gestión de Trabajos con Crontab
El comando crontab gestiona las tareas recurrentes con las siguientes opciones:
crontab -e: Edita el archivo de tareas programadascrontab -l: Lista todas las tareas programadascrontab -r: Elimina todas las tareas programadascrontab -u [usuario]: Modifica el crontab de otro usuario (requiere privilegios)
Ejemplo Práctico con Crontab:
-
Editar el archivo de crontab
crontab -e -
Programar una tarea que se ejecuta todos los días a las 8:00 AM
0 8 * * * /usr/local/bin/backup.shEl formato 0 8 * * * significa:
- 0: En el minuto 0 (inicio de la hora)
- 8: A las 8 AM
- *: Todos los días del mes
- *: Todos los meses
- *: Todos los días de la semana
-
Programar una tarea que se ejecuta los lunes, miércoles y viernes a las 8:00 AM
0 8 * * 1,3,5 /usr/local/bin/backup_diario.shEl formato 0 8 * * 1,3,5 significa:
- 0: En el minuto 0 (inicio de la hora)
- 8: A las 8 AM
- *: Cualquier día del mes
- *: Cualquier mes
- 1,3,5: Solo los lunes(1), miércoles(3) y viernes(5)
-
Verificar las tareas programadas
crontab -l -
Eliminar todas las tareas
crontab -r
4. Systemd-tmpfiles y sus Comandos
El servicio systemd-tmpfiles es una herramienta que administra archivos y directorios temporales en sistemas Linux. Su función principal es gestionar la creación, limpieza y mantenimiento de archivos temporales del sistema. Este servicio cumple tres funciones principales:
- Crear y mantener archivos y directorios temporales
- Limpiar archivos antiguos basándose en reglas predefinidas
- Asegurar permisos y propiedades correctas en directorios temporales
Las opciones principales son:
systemd-tmpfiles --create: Crea archivos y directoriossystemd-tmpfiles --clean: Limpia archivos antiguossystemd-tmpfiles --remove: Elimina archivos especificadossystemd-tmpfiles --boot: Ejecuta todas las operaciones de arranque
Ejemplo de Configuración para Limpieza Automática:
-
Crear un nuevo archivo de configuración
vim /etc/tmpfiles.d/custom.conf -
Agregar regla de limpieza en el archivo custom.conf
-
Tipo(d) - Ruta - Permisos - Usuario - Grupo - Edad
d /var/tmp/test 1777 root root 10dEsta regla significa:
d: Crea un directorio si no existe/var/tmp/test: Ruta del directorio a gestionar1777: Permisos (todos pueden leer, escribir y ejecutar)root root: El propietario y grupo del directorio10d: Eliminar archivos más antiguos de 10 días
-
Aplicar la configuración inmediatamente
sudo systemd-tmpfiles --create /etc/tmpfiles.d/custom.conf -
Verificar que la configuración se aplicó correctamente
ls -la /var/tmp/test -
Para probar la limpieza automática
systemd-tmpfiles --clean /etc/tmpfiles.d/custom.confEste comando eliminará los archivos más antiguos de 10 días
Tipos de reglas más comunes:
d: Crear/limpiar directoriof: Crear/limpiar archivo regularD: Limpiar directorio recursivamentex: Eliminar ruta si existeL: Crear enlace simbólico
Por ejemplo, cuando abres:
vim /etc/tmpfiles.d/custom.conf
Dentro del archivo podrías tener múltiples reglas como estas:
- Crear y limpiar un directorio
d /var/tmp/test 1777 root root 10d
- Crear un archivo regular
f /var/tmp/info.txt 0644 root root -
- Limpiar directorio recursivamente
D /var/tmp/logs 0755 root root 30d
- Crear un enlace simbólico
L /var/tmp/link - - - - /path/to/target
- Eliminar una ruta si existe
x /var/tmp/old-file
Cada línea en el archivo representa una regla diferente, y el primer carácter (d, f, D, x, L) determina qué tipo de acción se realizará sobre la ruta especificada.