crontab es un comando que le permite ejecutar comandos a intervalos de tiempo regulares, con la ventaja adicional que no tiene que estar conectado al sistema y que el reporte de salida se le envía por correo electrónico. Los intervalos se pueden especificar en minutos, horas, días, e incluso meses. Dependiendo de las opciones, crontab actuará diferentemente:
Comencemos editando un
archivo crontab
. Si ingresa crontab
-e, estará frente a su editor de texto favorito si tiene
definida la variable de entorno EDITOR
o la
variable de entorno VISUAL
, en caso contrario
se usará Vi. Una línea de un archivo
crontab
se compone de seis campos. Los
primeros cinco campos son los intervalos de tiempo para los
minutos, horas, días en el mes, meses y días en la semana. El
sexto campo es el comando a ejecutar. Las líneas que comienzan con
un #
se consideran como comentarios y serán
ignoradas por crond (el programa que es responsable de
ejecutar los archivos crontab
). Este formato
es un poco diferente para el archivo crontab
del sistema: /etc/crontab
. Allí, el sexto
campo es el nombre de usuario que se debería utilizar para iniciar
el programa del séptimo campo. Sólo se debería usar para tareas
administrativas, y para correr trabajos de usuarios que sólo
existen para mejorar la seguridad del sistema (tales como un
usuario anti-virus o un usuario que se creó para ejecutar un
servidor de bases de datos). Aquí tiene un ejemplo de
crontab
:
# Si no quiere recibir correo electrónico simplemente # ponga una almohadilla al comienzo de la siguiente línea #MAILTO="su_dirección_electrónica" # # Hacer un reporte de todas las imágenes nuevas a # las 14 hs. cada dos días, desde el ejemplo de # arriba - después de eso, "retocar" el archivo de # "estampa". El "%" se considera como una línea # nueva, esto le permite poner varios comandos # en una misma línea. 0 14 */2 * * find /shared/images \ -cnewer /shared/images/stamp \ -a -iregex ".*\.jpe?g" \ -a -not -regex \ ".*/old/.*"%touch /shared/images/stamp # # Cada Navidad, reproducir una melodía :) 0 0 25 12 * mpg123 $HOME/canciones/feliz_navidad.mp3 # # Imprimir la lista de compras cada martes a las 17 hs... 0 17 * * 2 lpr $HOME/lista_de_compras.txt
Hay muchas otras maneras de
especificar los intervalos aparte de las que se muestran en este
ejemplo. Por ejemplo, puede especificar un conjunto de valores
discretos separados por comas
(1,14,23
) o un rango (1-15
),
o incluso una combinación de ambos (1-10,12-20
),
o con un paso opcional (1-12,20-27/2
) ¡Ahora queda
en sus manos encontrar comandos útiles para poner!
También podría querer
ejecutar un comando un día dado, pero no regularmente. Por
ejemplo, quiere que se le recuerde de una cita, hoy a las 18
horas. Usted emplea X, el paquete
X11R6-contrib
está instalado, y quiere que se
le notifique, por ejemplo, a las 17:30 hs. que debe irse.
at es lo que Usted quiere aquí:
$ at 5:30pm # Ahora está frente al prompt "at" at> xmessage "¡Hora de irse! Cita a las 18" # Presione C-d para salir at> <EOT> job 1 at 2005-03-31 17:30 $
Se puede especificar la hora de diferentes maneras:
now
+<intervalo>
: Significa eso, ahora, más un
intervalo (Opcional. Si no se especifica el intervalo significa
ahora mismo). La sintaxis para el intervalo es
<n>
(minutes|hours|days|weeks|months)
(minutos|horas|días|semanas|meses ; sólo en inglés). Por ejemplo,
puede especificar now + 1 hour
(dentro de una
hora), now + 3 days
(dentro de tres días) y así
sucesivamente.
<hora>
<día>
: Especificar la fecha por completo.
El parámetro <hora>
es obligatorio.
at es muy liberal en lo que acepta: por
ejemplo, puede ingresar 0100
,
04:20
, 2am
,
0530pm
, 1800
, o uno de los
tres valores especiales: noon
(mediodía),
teatime
(la hora del té, 16 hs.) o
midnight
(medianoche). El parámetro
<día>
es opcional. También puede
especificarlo de diferentes maneras:
12/20/2001
por ejemplo, notación americana
para el 20 de diciembre de 2001, o, a la europea,
20.12.2001
. Puede omitir el año, pero entonces
sólo se acepta la notación europea: 20.12
.
También puede especificar el mes por su abreviatura en inglés:
Dec 20
o 20 Dec
son ambos
válidos.
at también acepta opciones diferentes:
-l
: Imprime la
lista de los trabajos que están programados; el primer campo es
el número de trabajo. Esto es equivalente al comando
atq.
-d <n>
:
Quita el trabajo número <n>
de la lista.
Puede obtener los números de los trabajos con el comando
atq o con la opción anterior. Esto es
equivalente al comando atrm <n>.
Como siempre, consulte la página Man at(1) para más opciones.