Mandato crontab

Finalidad

Somete, edita, lista o elimina trabajos de tipo cron.

Sintaxis

crontab [ -e [NombreUsuario] | -l [NombreUsuario] | -r [NombreUsuario] | -v [NombreUsuario] | Archivo ]

Descripción

El mandato crontab somete, edita, lista o elimina trabajos de tipo cron. Un trabajo cron es un mandato ejecutado por el daemon cron a intervalos regulares planificados. Para someter un trabajo cron, especifique el mandato crontab con el distintivo -e. El mandato crontab invoca una sesión de edición que permite al usuario crear un archivo crontab. Se crean entradas para cada trabajo cron de este archivo. Cada entrada debe estar en un formato aceptable para el daemon cron. Para obtener información sobre la creación de entradas, consulte El formato de entradas del archivo crontab.

Cuando haya terminado de crear las entradas y salga del archivo, el mandato crontab lo copiará en el directorio /var/spool/cron/crontabs y lo colocará en un archivo indicado para el nombre de usuario actual. Si ya existe un archivo con su nombre en el directorio crontabs, el mandato crontab lo sobrescribe.

Como alternativa, puede crear un archivo crontab especificando el parámetro Archivo. Si el archivo existe, debe tener el formato esperado por el daemon cron. Si el archivo no existe, el mandato crontab invoca el editor. Si la variable de entorno EDITOR existe, el mandato invoca al editor que ésta especifica. De lo contrario, el mandato crontab utiliza el editor vi.

Para listar el contenido del archivo crontab, especifique el mandato crontab con el distintivo -l. Para eliminar un archivo existente, utilice el distintivo -r.

El propietario del archivo crontab o el usuario raíz pueden utilizar el parámetro opcional NombreUsuario para editar, listar, eliminar o comprobar el estado de los trabajos cron del usuario especificado. Si el NombreUsuario no es válido, se genera un mensaje de error y el programa efectúa la salida.

Si no se especifica el parámetro opcional NombreUsuario, los distintivos de crontab están disponibles para el usuario raíz y el usuario actual.

Seguridad

Sólo el usuario raíz o el propietario del archivo crontab pueden utilizar NombreUsuario a continuación de los distintivos -e , -l, -r y -v para editar, listar, eliminar o comprobar el archivo crontab del usuario especificado.

El daemon cron

El daemon cron ejecuta mandatos de acuerdo con las entradas del archivo crontab. A menos que redireccione la salida de un trabajo cron a la salida o a los errores estándar, el daemon cron envía al usuario la salida o los errores de los mandatos. Si especifica incorrectamente un trabajo cron en el archivo crontab, el daemon cron no lo ejecuta.

El daemon cron examina los archivos crontab sólo cuando se inicializa el daemon cron. Cuando el usuario realiza cambios en el archivo crontab mediante el mandato crontab, se envía un mensaje al daemon cron indicando el cambio. Esto elimina la actividad general derivada de la comprobación de archivos nuevos o cambiados a intervalos regulares planificados.

Controles de utilización del mandato crontab

Los archivos /var/adm/cron/cron.allow y /var/adm/cron/cron.deny controlan qué usuarios pueden utilizar el mandato crontab. Un usuario raíz puede crear, editar o suprimir estos archivos. Las entradas de estos archivos son nombres de inicio de sesión de usuario, uno en cada línea. Si su ID de inicio de sesión está asociado con más de un nombre de inicio de sesión, el mandato crontab utiliza el primer nombre de inicio de sesión que encuentra en el archivo /etc/passwd, independientemente del nombre de inicio de sesión que pueda estar utilizando realmente el usuario. Asimismo, para permitir que los usuarios inicien trabajos cron, el atributo daemon del archivo /etc/security/user debe establecerse en TRUE mediante el mandato chuser.

A continuación figura un ejemplo de un archivo cron.allow:

root
nick
dee
sarah

Si el archivo cron.allow existe, sólo los usuarios cuyos nombres de inicio de sesión aparezcan en él pueden utilizar el mandato crontab . El nombre de inicio de sesión del usuario raíz debe aparecer en el archivo cron.allow si éste existe. Un administrador del sistema puede impedir explícitamente que un usuario utilice el mandato crontab listando el nombre de inicio de sesión del usuario en el archivo cron.deny. Si sólo existe el archivo cron.deny, cualquier usuario cuyo nombre no aparezca en el archivo puede utilizar el mandato crontab.

Un usuario no podrá utilizar el mandato crontab si se cumple una de las siguientes condiciones:

Si ni el archivo cron.allow ni el archivo cron.deny existen, sólo alguien con autorización de usuario raíz podrá someter un trabajo con el mandato crontab.

El formato de las entradas del archivo crontab

Un archivo crontab contiene una entrada para cada trabajo cron. Las entradas están separadas por caracteres de línea nueva. Cada entrada del archivo crontab contiene seis campos separados por espacios o tabulaciones, con el siguiente formato:

 
minuto  hora  día_del_mes  mes  día_semana  mandato

Estos campos aceptan los siguientes valores:

minuto 0 a 59
hora 0 a 23
día_del_mes 1 a 31
mes 1 a 12
día_semana 0 a 6 para Domingo a Sábado
mandato un mandato de shell

Debe especificar un valor para cada campo. Excepto para el campo mandato, estos campos pueden contener lo siguiente:

Nota: cualquier carácter precedido de una barra inclinada invertida (incluido %) hace que ese carácter se trate como un literal. La especificación de los días puede realizarse en dos campos (día del mes y día de la semana). Si especifica ambos como una lista de elementos, se respetarán ambos. Por ejemplo, la entrada siguiente:

0 0 1,15 * 1 mandato

ejecutará el mandato en los días primero y decimoprimero de cada mes. así como cada Lunes. Para especificar los días sólo con un campo, el otro campo debe contener un * .

Especificación de mandatos

El daemon cron ejecuta el mandato indicado en el sexto campo en la fecha y hora seleccionadas. Si incluye un signo de porcentaje (%) en el sexto campo, el daemon cron tratará todos los elementos que lo precedan como si fuera la invocación del mandato y pondrá todos los elementos que lo sigan a disposición de la entrada estándar, a menos que coloque un carácter de escape ante el signo de porcentaje (\%). Las líneas en blanco y las líneas cuyo primer carácter no en blanco sea el signo de número (#) se pasarán por alto. Si los argumentos del mandato contienen una barra inclinada invertida ('\'), ésta debe ir precedida de otra barra inclinada invertida.

Nota:
La shell ejecuta sólo la primera línea del campo de mandato. Todas las demás líneas quedan disponibles para el mandato como entrada estándar.

El daemon cron inicia una subshell desde el directorio HOME. Si planifica un mandato para que se ejecute cuando no haya iniciado la sesión y desea que se ejecuten los mandatos del archivo .profile, el mandato debe leer explícitamente el archivo .profile.

El daemon cron suministra un entorno predeterminado para cada shell, definiendo HOME, LOGNAME, SHELL (=/usr/bin/sh) y PATH (=/usr/bin).

Distintivos

-e NombreUsuario Edita una copia del archivo crontab del usuario y crea un archivo vacío para editar si el archivo crontab no existe para un NombreUsuario válido. Cuando ha terminado la edición, el archivo se copia en el directorio crontab como archivo crontab del usuario.
-l NombreUsuario Indica el archivo crontab del usuario.
-r NombreUsuario Elimina el archivo crontab del usuario del directorio crontab.
-v NombreUsuario Indica el estado de los trabajos cron del usuario.

Seguridad

Eventos de auditoría: si el subsistema de auditoría se ha configurado correctamente y está habilitado, el mandato crontab genera el siguiente registro (evento) de auditoría cada vez que se ejecuta:

Evento Información
CRON_JobRemove Indica qué usuarios han eliminado un trabajo cron y cuándo lo han hecho.
CRON_JobAdd Indica qué usuarios han añadido un trabajo cron y cuándo lo han hecho.

Estado de salida

Este mandato devuelve los siguientes valores de salida:

0 Finalización satisfactoria.
>0 Se ha producido un error.

Ejemplos

  1. Para copiar un archivo llamado mycronjobs en el directorio /var/spool/cron/crontabs, especifique lo siguiente:
    crontab mycronjobs
    El archivo se copiará como:
    /var/spool/cron/crontabs/<nombre_usuario>
    donde <nombre_usuario> es el nombre de usuario actual.
  2. Para grabar la hora en la consola cada hora, especifique:
    0 * * * * echo The hour is `date` . 
    >/dev/console
  3. Para ejecutar el mandato calendar a las 6:30 a.m. cada Lunes, Miércoles y Viernes, especifique:
    30 6 * * 1,3,5 /usr/bin/calendar
  4. Para ejecutar el mandato calendar cada día del año a las 6:30, especifique lo siguiente:
    30 6 * * * /usr/bin/calendar
  5. Para ejecutar un script llamado maintenance cada día a medianoche en Agosto, especifique lo siguiente:
    0 0 * 8 * /u/harry/bin/maintenance
  6. Para definir texto para la entrada estándar de un mandato, especifique:
    0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to 
    turn in your time card.
    El texto situado a continuación del signo de porcentaje (%) define la entrada estándar del mandato wall como:
    HAPPY HOLIDAY!
     
    Remember to turn in your time card.

Archivos

/var/adm/cron/FIFO Un conducto indicado que envía mensajes al daemon cron cuando se someten trabajos nuevos con el mandato crontab o at.
/var/spool/cron/crontabs Especifica el área de spool de crontab.
/var/adm/cron/cron.allow Especifica una lista de usuarios a los que se permite el acceso al mandato crontab.
/var/adm/cron/cron.deny Especifica una lista de usuarios a los que se deniega el acceso al mandato crontab.

Enviar comentarios |  Valorar esta página