Omitir Vínculos de navegación | |
Salir de la Vista de impresión | |
![]() |
Gestión del rendimiento, los procesos y la información del sistema en Oracle Solaris 11.1 Oracle Solaris 11.1 Information Library (Español) |
1. Gestión de información del sistema (tareas)
2. Gestión de procesos del sistema (tareas)
3. Supervisión del rendimiento del sistema (tareas)
4. Programación de tareas del sistema (tareas)
Maneras de ejecutar automáticamente tareas del sistema
Para programar trabajos repetitivos: crontab
Para programar un solo trabajo: at
Programación de tareas del sistema
Creación y edición de archivos crontab (mapa de tareas)
Programación de tareas repetitivas del sistema (cron )
Cómo gestiona la programación el daemon cron
Sintaxis de entradas de archivo crontab
Creación y edición de archivos crontab
Cómo crear o editar un archivo crontab
Cómo verificar que un archivo crontab existe
Visualización de archivos crontab
Cómo visualizar un archivo crontab
Eliminación de archivos crontab
Cómo eliminar un archivo crontab
Control del acceso al comando crontab
Cómo denegar el acceso al comando crontab
Cómo limitar el acceso al comando crontab a los usuarios especificados
Programación de tareas mediante el comando at
Uso del comando at (mapa de tareas)
Programación de una sola tarea del sistema (at)
Control del acceso al comando at
Cómo denegar el acceso al comando at
Cómo verificar que se ha denegado el acceso al comando at
5. Gestión de la consola del sistema, dispositivos del terminal y servicios de energía (tareas)
En esta sección, se incluyen las tareas para programar tareas del sistema mediante archivos crontab.
|
Las siguientes secciones describen cómo crear, editar, visualizar y eliminar archivos crontab, y cómo controlar el acceso a ellos.
El daemon cron programa tareas del sistema según los comandos encontrados en cada archivo crontab. Un archivo crontab consta de comandos (uno por línea) que se ejecutarán en intervalos regulares. El principio de cada línea contiene información de fecha y hora que indica al daemon cron cuándo debe ejecutar el comando.
Por ejemplo, durante la instalación del software SunOS, se proporciona un archivo crontab llamado root. El contenido del archivo incluye las siguientes líneas de comando:
10 3 * * * /usr/sbin/logadm (1) 15 3 * * 0 /usr/lib/fs/nfs/nfsfind (2) 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3) 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4)
A continuación, se describe el resultado de cada una de las líneas de comando:
La primera línea ejecuta el comando logadm todos los días a las 3:10 a. m.
La segunda línea ejecuta la secuencia de comandos nfsfind todos los domingos a las 3:15 a. m.
La tercera línea ejecuta una secuencia de comandos que comprueba cambios de hora estacionales (y, de ser necesario, realiza correcciones) todos los días a las 2:10 a. m.
Si no hay ninguna zona horaria RTC, ni un archivo /etc/rtc_config, esta entrada no hace nada.
x86 sólo - La secuencia de comandos /usr/sbin/rtc sólo se puede ejecutar en un sistema basado en x86.
La cuarta línea comprueba (y elimina) las entradas duplicadas en la tabla del servicio de seguridad genérico, /etc/gss/gsscred_db, todos los días a las 3:30 a. m.
Para obtener más información sobre la sintaxis de líneas de un archivo crontab, consulte Sintaxis de entradas de archivo crontab.
Los archivos crontab se almacenan en el directorio /var/spool/cron/crontabs. Varios archivos crontab, además de root, se proporcionan durante la instalación del software Oracle Solaris. Vea la siguiente tabla.
Tabla 4-2 Archivos crontab predeterminados
|
Además de los archivos crontab predeterminados, los usuarios pueden crear archivos crontab para programar sus propias tareas del sistema. Otros archivos crontab reciben el nombre de las cuentas de usuario en las que se crean, como bob, mary, smith o jones.
Para acceder a archivos crontab que pertenecen a root o a otros usuarios, se necesitan privilegios de superusuario.
Los procedimientos que explican cómo crear, editar, visualizar y eliminar archivos crontab se describen en las siguientes secciones.
El daemon cron gestiona la programación automática de comandos crontab. El rol del daemon cron consiste en comprobar en el directorio /var/spool/cron/crontab la presencia de archivos crontab.
El daemon cron realiza las siguientes tareas en el inicio:
Comprueba la presencia de archivos crontab nuevos.
Lee las horas de ejecución que se muestran en los archivos.
Configura los comandos para que se ejecuten en las horas adecuadas.
Escucha notificaciones de los comandos crontab sobre archivos crontab actualizados.
Casi de la misma manera, el daemon cron controla la programación de archivos at. Estos archivos se almacenan en el directorio /var/spool/cron/atjobs. El daemon cron también escucha notificaciones de los comandos crontab sobre trabajos at ejecutados.
Un archivo crontab consta de comandos (uno por línea) que se ejecutan de forma automática en el momento especificado por los primeros cinco campos de cada línea de comandos. Estos cinco campos, descritos en la siguiente tabla, están separados por espacios.
Tabla 4-3 Valores aceptables para campos de hora de crontab
|
Siga estas directrices para utilizar caracteres especiales en los campos de hora de crontab:
Utilice un espacio para separar cada campo.
Utilice una coma para separar varios valores.
Utilice un guión para designar un rango de valores.
Utilice un asterisco como comodín para incluir todos los valores posibles.
Utilice una marca de comentario (#) al principio de una línea para indicar un comentario o una línea en blanco.
Por ejemplo, la siguiente entrada del comando crontab muestra un recordatorio en la ventana de la consola del usuario el primer día y a los quince días de cada mes, a las 4 p. m.
0 16 1,15 * * echo Timesheets Due > /dev/console
Todos los comandos de un archivo crontab deben estar compuestos por una línea, aunque esa línea sea muy larga. El archivo crontab no reconoce retornos de carro adicionales. Para obtener información más detallada sobre las opciones de comandos y las entradas de crontab, consulte la página del comando man crontab(1).
La forma más sencilla de crear un archivo crontab consiste en utilizar el comando crontab -e. Este comando invoca al editor de texto que se ha definido para el entorno del sistema. El editor predeterminado para el entorno del sistema está definido en la variable de entorno EDITOR. Si esta variable no se ha definido, el comando crontab utiliza el editor predeterminado ed. Se recomienda que seleccione un editor conocido.
El siguiente ejemplo muestra cómo determinar si se ha definido un editor y cómo configurar vi para que sea el comando predeterminado.
$ which $EDITOR $ $ EDITOR=vi $ export EDITOR
Al crear un archivo crontab, éste se colocará automáticamente en el directorio /var/spool/cron/crontabs y recibirá su nombre de usuario. Puede crear o editar un archivo crontab para otro usuario, o para un usuario root, si tiene privilegios de usuario root.
Antes de empezar
Si crea o edita un archivo crontab que pertenece a un usuario root o a otro usuario, debe asumir el rol root. Consulte Cómo usar los derechos administrativos que tiene asignados de Administración de Oracle Solaris 11.1: servicios de seguridad.
No es necesario asumir el rol root para editar su propio archivo crontab.
# crontab -e [username]
Donde username especifica el nombre de la cuenta del usuario para la que desea crear o editar un archivo crontab. Puede crear su propio archivo crontab sin privilegios de superusuario, pero debe tener privilegios de superusuario para crear o editar un archivo crontab para root o para otro usuario.
Siga la sintaxis descrita en Sintaxis de entradas de archivo crontab. El archivo crontab se colocará en el directorio /var/spool/cron/crontabs.
# crontab -l [username]
Ejemplo 4-1 Creación de un archivo crontab
El siguiente ejemplo muestra cómo crear un archivo crontab para otro usuario.
# crontab -e jones
La siguiente entrada del comando agregada a un archivo crontab nuevo elimina automáticamente cualquier archivo de registro del directorio principal del usuario todos los domingos a la 1:00 a. m. Debido a que la entrada del comando no redirige la salida, se agregan caracteres de redireccionamiento a la línea de comandos después de *.log. De esta forma, se asegurará de que el comando se ejecute correctamente.
# This command helps clean up user accounts. 1 0 * * 0 rm /home/jones/*.log > /dev/null 2>&1
$ ls -l /var/spool/cron/crontabs
Verifique el contenido del archivo crontab del usuario mediante el comando crontab -l como se describe en Cómo visualizar un archivo crontab.
El comando crontab -l muestra el contenido de un archivo crontab casi de la misma manera en que el comando cat muestra el contenido de otros tipos de archivos. No es necesario cambiar el directorio a /var/spool/cron/crontabs (donde se ubican los archivos crontab) para utilizar este comando.
De manera predeterminada, el comando crontab -l muestra su propio archivo crontab. Para visualizar los archivos crontab que pertenecen a otros usuarios, debe ser superusuario.
Antes de empezar
Asuma el rol root para visualizar un archivo crontab que pertenece a un usuario root o a otro usuario. Consulte Cómo usar los derechos administrativos que tiene asignados de Administración de Oracle Solaris 11.1: servicios de seguridad.
No es necesario asumir el rol root para visualizar su propio archivo crontab.
# crontab -l [username]
Donde username especifica el nombre de la cuenta del usuario de la que desea visualizar un archivo crontab. Visualizar el archivo crontab de otro usuario requiere privilegios de superusuario.
![]() | Precaución - Si accidentalmente escribe el comando crontab sin opciones, presione el carácter de interrupción de su editor. Este carácter permite salir sin guardar los cambios. Si, en cambio, guardó los cambios y cerró el archivo, el archivo crontab existente se sobrescribirá con un archivo vacío. |
Ejemplo 4-2 Visualización de un archivo crontab
Este ejemplo muestra cómo utilizar el comando crontab -l para visualizar el contenido del archivo crontab predeterminado del usuario.
$ crontab -l 13 13 * * * chmod g+w /home1/documents/*.book > /dev/null 2>&1
Ejemplo 4-3 Visualización del archivo root crontab predeterminado
Este ejemplo muestra cómo visualizar el archivo crontab predeterminado de root.
$ suPassword: # crontab -l #ident "@(#)root 1.19 98/07/06 SMI" /* SVr4.0 1.1.3.1 */ # # The root crontab should be used to perform accounting data collection. # # 10 3 * * * /usr/sbin/logadm 15 3 * * 0 /usr/lib/fs/nfs/nfsfind 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean #10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
Ejemplo 4-4 Visualización del archivo crontab de otro usuario
Este ejemplo muestra cómo visualizar el archivo crontab que pertenece a otro usuario.
$ su Password: # crontab -l jones 13 13 * * * cp /home/jones/work_files /usr/backup/. > /dev/null 2>&1
De manera predeterminada, las protecciones del archivo crontab están configuradas para que no pueda suprimir un archivo crontab desprevenidamente mediante el comando rm. En cambio, utilice el comando crontab -r para eliminar archivos crontab.
De manera predeterminada, el comando crontab -r elimina su propio archivo crontab.
No es necesario cambiar el directorio a /var/spool/cron/crontabs (donde se ubican los archivos crontab) para utilizar este comando.
Antes de empezar
Asuma el rol root para eliminar un archivo crontab que pertenece a un usuario root o a otro usuario. Los roles incluyen autorizaciones y comandos con privilegios. Consulte Cómo usar los derechos administrativos que tiene asignados de Administración de Oracle Solaris 11.1: servicios de seguridad.
No es necesario asumir el rol root para eliminar su propio archivo crontab.
# crontab -r [username]
Donde username especifica el nombre de la cuenta del usuario de la que desea eliminar un archivo crontab. Eliminar archivos crontab de otro usuario requiere privilegios de superusuario.
![]() | Precaución - Si accidentalmente escribe el comando crontab sin opciones, presione el carácter de interrupción de su editor. Este carácter permite salir sin guardar los cambios. Si, en cambio, guardó los cambios y cerró el archivo, el archivo crontab existente se sobrescribirá con un archivo vacío. |
# ls /var/spool/cron/crontabs
Ejemplo 4-5 Eliminación de un archivo crontab
En los siguientes ejemplos, se muestra cómo el usuario smith usa el comando crontab -r para eliminar su propio archivo crontab.
$ ls /var/spool/cron/crontabs adm jones root smith sys uucp $ crontab -r $ ls /var/spool/cron/crontabs adm jones root sys uucp
Puede controlar el acceso al comando crontab mediante dos archivos en el directorio /etc/cron.d: cron.deny y cron.allow. Estos archivos permiten que sólo los usuarios especificados realicen tareas del comando crontab, como crear, editar, visualizar o eliminar sus propios archivos crontab.
Los archivos cron.deny y cron.allow constan de una lista de nombres de usuario (un nombre de usuario por línea).
Estos archivos de control de acceso funcionan de manera conjunta como se indica a continuación:
Si cron.allow existe, sólo los usuarios indicados en este archivo pueden crear, editar, visualizar o eliminar archivos crontab.
Si cron.allow no existe, todos los usuarios pueden ejecutar archivos crontab, excepto los usuarios indicados en cron.deny.
Si ni cron.allow ni cron.deny existen, se necesitan privilegios de superusuario para ejecutar el comando crontab.
Los privilegios de superusuario son necesarios para editar o crear los archivos cron.deny y cron.allow.
El archivo cron.deny, creado durante la instalación del software SunOS, contiene los siguientes nombres de usuario:
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess
Ninguno de los nombres de usuario del archivo cron.deny predeterminado puede acceder al comando crontab. Puede editar este archivo para agregar otros nombres de usuario a los que se les denegará el acceso al comando crontab.
No se proporcionó un archivo cron.allow de manera predeterminada. Por lo tanto, después de la instalación del software Oracle Solaris, todos los usuarios (excepto los usuarios indicados en el archivo cron.deny predeterminado) pueden acceder al comando crontab. Si crea un archivo cron.allow, sólo estos usuarios podrán acceder al comando crontab.
$ su - Password: #
daemon bin smtp nuucp listen nobody noaccess username1 username2 username3 . . .
# cat /etc/cron.d/cron.deny daemon bin nuucp listen nobody noaccess
Si no agrega root al archivo, el acceso de superusuario a los comandos crontab será denegado.
Incluya a los usuarios que tendrán permiso para utilizar el comando crontab.
root username1 username2 username3 . . .
Ejemplo 4-6 Limitación del acceso al comando crontab a los usuarios especificados
El siguiente ejemplo muestra un archivo cron.deny que impide que los nombres de usuario jones, temp y visitor accedan al comando crontab.
$ cat /etc/cron.d/cron.deny daemon bin smtp nuucp listen nobody noaccess jones temp visitor
El siguiente ejemplo muestra un archivo cron.allow. Los usuarios root, jones y smith son los únicos usuarios que pueden acceder al comando crontab.
$ cat /etc/cron.d/cron.allow root jones smith
Para verificar si un usuario específico puede acceder al comando crontab, utilice el comando crontab -l mientras está conectado en la cuenta de usuario.
$ crontab -l
Si el usuario puede acceder al comando crontab, y ya ha creado un archivo crontab, el archivo se muestra. De lo contrario, si el usuario puede acceder al comando crontab, pero no existe ningún archivo crontab, se muestra un mensaje similar al siguiente:
crontab: can't open your crontab file
Este usuario aparece en el archivo cron.allow (si el archivo existe) o no aparece en el archivo cron.deny.
Si el usuario no puede acceder al comando crontab, aparece el siguiente mensaje, independientemente de que exista un archivo crontab anterior:
crontab: you are not authorized to use cron. Sorry.
Este mensaje significa que el usuario no aparece en el archivo cron.allow (si el archivo existe) o aparece en el archivo cron.deny.