Archivos de Tarea Cron de Fedora

Este documento describe las directrices para empaquetado en archivos de tareas en cron para Fedora.

Para los propósitos de estas directrices, una tarea de cron está definida como un guion (p. ej., un guión de intérprete o un guion de Perl). Estos archivos de tarea de cron están planificadas para ejecutar en los intervalos regulares por un demonio de cron.

Archivos de Tareas de Cron en el sistema de archivos

Los paquetes con archivos de tarea de cron deben colocarse en uno o más de los siguientes directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly en el intervalo pretendido donde se ejecutarían.

Hay una excepción a esta regla: si una cierta tarea de cron tiene que ser ejecutada en la misma frecuencia o en un tiempo concreto otro que el anterior, entonces sería añadido un archivo crontab personal a /etc/cron.d (con permisos 0640). En este caso, el archivo de tareas de cron (el guion) debe ser situado dentro de un lugar del sistema apropiado p. ej. %{_bindir}, %{_libexecdir}), y NO en /etc/cron.d.

Ambos archivos de tarea de cron y los archivos de definición de crontab instalados en cualquiera de aquellos directorios deben ser tratados como archivos de configuración tales que pueden ser fácilmente modificados por el administrador de sistema local.

Archivo de Tarea Cron

Un típico archivo de tarea de cron es tan solo un guion como

#!/bin/sh
# Mi guion de tarea de cron
# set -x

echo "Esto es mi simple guion de tareas de cron"

exit 0

Ejemplo de definición de crontab ejecutado en cada otra hora especificada en /etc/cron.d/example

# .---------------- minuto (0 - 59)
# |  .------------- hora (0 - 23)
# |  |  .---------- día del mes (1 - 31)
# |  |  |  .------- mes (1 - 12) O ene,feb,mar,abr ...
# |  |  |  |  .---- día de semana (0 - 6) (Domingo=0 o 7) O dom,lun,mar,mié,jue,vie,sáb
# |  |  |  |  |
# *  *  *  *  * nombre-usuario instrucción a ser ejecutada

0 * /2 * * * root /usr/bin/ejemplo

Nombres de archivo de tarea cron

El nombre de archivo de un archivo de tarea de cron coincidiría el nombre del paquete desde el cual venga.

Si un paquete proporciona archivos de tarea para cron en el mismo directorio, todos los nombres de archivo comenzarían con el nombre del paquete seguido por un guión (-) y un sufijo adecuado.

Empaquetado de Archivos de Tarea de Cron

Los archivos de tarea de cron en paquetes deben estar marcados como %config(noreplace), y su(s) nombre(s) de archivo(s) coincidirían con el nombre del paquete.

Los archivos de ayudante utilizados por archivos de tareas de cron estarían colocados en lugares apropiados del sistema (p. ej. %{_bindir} o %{_libexecdir}) y no necesita estar marcado como %config.

Los paquetes con archivos de tarea de cron deben tener un explícito Requires: crontabs. Desde crontabs requiere /etc/cron.d y todos los paquetes de demonio de cron crea (y apropia) ese directorio, crontabs sirve como requisito virtual para funcionalidad del demonio de cron.

Ejemplo de empaquetado de tarea de cron

Nombre:
...
Source1: %{nombre}.cron
Requires: crontabs

…

%install
...
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cron.monthly
%{__install} -p -D -m 0750 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/cron.monthly/%{nombre}

%files
%config(noreplace) %{_sysconfdir}/cron.monthly/%{nombre}