Mandato crontab

Finalidad

Somete, edita, lista o elimina trabajos cron.

Sintaxis

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

Descripción

El mandato crontab somete, edita, lista o elimina trabajos cron. Un trabajo cron es un mandato ejecutado por el daemon cron a intervalos planificados regularmente. Para someter un trabajo cron, especifique el mandato crontab con el distintivo -e . El mandato crontab invoca una sesión de edición que le permite crear un archivo crontab . Cree entradas para cada trabajo cron en 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 Formato de entrada de archivo crontab.

Cuando termine de crear entradas y salga del archivo, el mandato crontab lo copia en el directorio /var/spool/cron/crontabs y lo coloca en un archivo con el nombre de usuario actual. Si ya existe un archivo con su nombre en el directorio crontab , el mandato crontab lo sobrescribe.

De forma alternativa, puede crear un archivo crontab especificando el parámetro Archivo . Si el archivo existe, debe estar en el formato que espera el daemon cron . Si el archivo no existe, el mandato crontab invoca el editor. Si existe la variable de entorno EDITOR , el mandato invoca el editor que 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 root puede utilizar el parámetro opcional UserName para editar, listar, eliminar o verificar el estado de los trabajos cron para el usuario especificado. Si el UserName no es válido, se genera un mensaje de error y el programa sale.

Si no se especifica el parámetro opcional UserName , los distintivos crontab están disponibles para el usuario root y el usuario actual.

Seguridad

Sólo el usuario root o el propietario del archivo crontab puede utilizar UserName a continuación de los distintivos -e, -l, -ry -v para editar, listar, eliminar o verificar 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 redirija la salida de un trabajo cron a una salida o error estándar, el daemon cron le envía cualquier salida o error de mandato. Si especifica un trabajo cron de forma incorrecta en el archivo crontab , el daemon cron no ejecuta el trabajo.

El daemon cron examina los archivos crontab sólo cuando se inicializa el daemon cron . Cuando realiza cambios en el archivo crontab utilizando el mandato crontab , se envía un mensaje indicando el cambio al daemon cron . Esto elimina la sobrecarga de comprobar si hay archivos nuevos o cambiados a intervalos planificados regularmente.

Controles al utilizar el 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 root puede crear, editar o suprimir estos archivos. Las entradas en dichos archivos son nombres de inicio de sesión de usuario con un nombre 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 se encuentra en el archivo /etc/passwd , independientemente del nombre de inicio de sesión que esté utilizando. Además, para permitir que los usuarios inicien trabajos cron , el atributo daemon del archivo /etc/security/user debe establecerse en TRUE, utilizando el mandato chuser .

A continuación se muestra 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 registro del usuario root debe aparecer en el archivo cron.allow si el archivo 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 puede utilizar el mandato crontab si se cumple una de las condiciones siguientes:

  • El archivo cron.allow y el archivo cron.deny no existen (solo permite el usuario root).
  • El archivo cron.allow existe pero el nombre de inicio de sesión del usuario no aparece en la lista.
  • El archivo cron.deny existe y el nombre de inicio de sesión del usuario aparece listado en él.

Si no existe el archivo cron.allow ni el archivo cron.deny , sólo alguien con autorización de usuario root puede enviar un trabajo con el mandato crontab .

Formato de entrada de archivo crontab

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

 
minute  hour  day_of_month  month  weekday  command

Estos campos aceptan los valores siguientes:

Elemento Descripción
minuto De 0 a 59
hora De 0 a 23
día_de_mes 1 a 31
mes 1 a 12
día de la 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 command , estos campos pueden contener lo siguiente:

  • Un número en el rango especificado. Para ejecutar un mandato en mayo, especifique 5 en el campo mes .
  • Dos números separados por un guión para indicar un rango inclusivo. Para ejecutar un trabajo cron de martes a viernes, coloque de 2 a 5 en el campo weekday .
  • Una lista de números separados por comas. Para ejecutar un mandato el primer y último día de enero, debe especificar 1,31 en el campo day_of_month .
  • Se puede utilizar una combinación de dos números separados por un guión para indicar un rango inclusivo y una lista de números separados por comas. Para ejecutar un mandato en el primer, décimo a decimosexto y último día de enero, debe especificar de 1,10 a 16,31 en el campo día_de_mes. Los dos puntos anteriores también se pueden utilizar en combinación.
  • Un * (asterisco), que significa todos los valores permitidos. Para ejecutar un trabajo cada hora, especifique un asterisco en el campo de hora.
Nota: Cualquier carácter precedido por una barra inclinada invertida (incluido el%) hace que ese carácter se trate literalmente. La especificación de días puede hacerse por dos campos (día del mes y día de la semana). Si especifica ambos como una lista de elementos, ambos se adhieren. Por ejemplo, la entrada siguiente:
0 0 1,15 * 1 command

ejecutaría el mandato el primer y el decimoquinto día de cada mes, así como cada lunes. Para especificar días sólo por un campo, el otro campo debe contener un * .

Especificación de mandatos

El daemon cron ejecuta el mandato especificado en el sexto campo en la fecha y hora seleccionadas. Si incluye un signo de porcentaje (%) en el sexto campo, el daemon cron trata todo lo que le precede como invocación de mandato y hace que todo lo que le sigue esté disponible para la entrada estándar, a menos que escape el signo de porcentaje (\ %). Se ignorarán las líneas en blanco y las líneas cuyo primer carácter no en blanco sea el signo de almohadilla (#). Si los argumentos del mandato tienen una barra inclinada invertida ('\'), la barra inclinada invertida debe ir precedida de otra barra inclinada invertida.

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

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

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

Sucesos de auditoría

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

Suceso Información
CRON_JobRemove Lista qué usuarios han eliminado un archivo crontab y cuándo.
CRON_JobAdd Lista qué usuarios han editado un archivo crontab y cuándo.

Usuarios RBAC de atención y usuarios de Trusted AIX®: este mandato puede realizar operaciones con privilegios. Sólo los usuarios con privilegios pueden ejecutar operaciones con privilegios. Para obtener más información sobre autorizaciones y privilegios, consulte el apartado Base de datos de mandatos con privilegios en Seguridad. Para obtener una lista de los privilegios y las autorizaciones asociadas a este mandato, consulte el mandato lssecattr o el submandato getcmdattr.

Distintivos

Elemento Descripción
-e UserName Edita una copia del archivo crontab del usuario o crea un archivo vacío para editar si el archivo crontab no existe para un UserNameválido. Cuando se completa la edición, el archivo se copia en el directorio crontab como el archivo crontab del usuario.
-l UserName Lista el archivo crontab del usuario.
-r UserName Elimina el archivo crontab del usuario del directorio crontab .
-v UserName Lista el estado de los trabajos cron del usuario.

Estado de salida

Este mandato devuelve los siguientes valores de salida:

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

Ejemplos

  1. Para copiar un archivo llamadomycronjobsen el directorio /var/spool/cron/crontabs , especifique lo siguiente:
    crontab mycronjobs
    El archivo se copiará como:
    /var/spool/cron/crontabs/<username>
    donde <nombre_usuario> es el nombre de usuario actual.
  2. Para escribir la hora en la consola cada hora de la hora, especifique:
    0 * * * * echo The hour is `date` . 
    >/dev/console
  3. Para ejecutar el mandato calendar a las 6:30 a.m. todos los lunes, miércoles y viernes, entre:
    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 llamadomaintenancetodos los días a medianoche de agosto, especifique lo siguiente:
    0 0 * 8 * /u/harry/bin/maintenance
  6. Para definir texto para la entrada estándar en un mandato, especifique:
    0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to 
    turn in your time card.
    El texto que sigue a % (signo de porcentaje) define la entrada estándar para el mandato wall como:
    HAPPY HOLIDAY!
     
    Remember to turn in your time card.

Archivos

Elemento Descripción
/var/adm/cron/FIFO Un conducto con nombre que envía mensajes al daemon cron cuando se envían nuevos trabajos con el mandato crontab o at .
/var/spool/cron/crontabs Especifica el área de spool crontab.
/var/adm/cron/cron.allow Especifica una lista de usuarios a los que se permite acceder al mandato crontab .
/var/adm/cron/cron.deny Especifica una lista de usuarios a los que se ha denegado el acceso al mandato crontab .