Subsecciones
Permite indicar el momento en que se quiere ejecutar un trabajo
- Sintaxis:
at [opciones] TIME
- Al ejecutar at pasamos a un nuevo prompt, que nos permite introducir comandos que se ejecutarán a la hora indicada
- para salvar el trabajo y salir CTRL-D
- al terminar, la salida estándar se envía como un mail al usuario (si está instalado un agente de correo)
- el trabajo se ejecuta mientras el sistema esté encendido a la hora indicada
- Ejemplo:
$ at 11:45
warning: commands will be executed using /bin/sh
at> ls /tmp > lista
at> env DISPLAY=:0 zenity -info -text="Hola"
at> <EOT>
job 4 at Wed Nov 16 11:45:00 2005
- Algunas opciones:
- -f FILE especifica un fichero conteniendo las acciones a realizar en vez de la entrada estándar
- -c jobnumber muestra el trabajo a ejecutar
- -m envía un mail al usuario, incluso aunque no haya salida
- -v muestra la hora a la que se ejecutará el trabajo
- TIME puede especificarse de varias formas:
- HH:MM por ejemplo 12:54
- HH:MMAM/PM, por ejemplo 1:35PM
- HH:MM MMDDYY, por ejemplo 1:35PM 122505
- now + numero unidades, donde unidades puede ser minutes, hours, days, o weeks
$ at now+2hours
- today, tomorrow, por ejemplo 12:44tomorrow
- midnight (00:00), noon (12:00), teatime (16:00)
Comandos relacionados
- atq o at -l lista los trabajos pendientes del usuario
- si es el superusuario, lista los trabajos de todos los usuarios
- atrm o at -d borra trabajos identificados por su número de trabajo
- batch ejecuta trabajos cuando la carga del sistema es baja
- el trabajo empieza en cuanto la carga caiga por debajo de 1.5
- la carga se obtiene del fichero /proc/loadavg
Ficheros de configuración
- El administrador puede controlar la utilización de at
- Ficheros /etc/at.allow y /etc/at.deny
- at.allow lista los usuarios que pueden usar at
- at.deny lista los usuarios que NO pueden usar at
- Primero se chequea /etc/at.allow
- si está el usuario, puede usar at
- si no está o el fichero no existe, se chequea /etc/at.deny
- si el usuario no está en at.deny puede usar at
- Si no existe ninguno de los dos ficheros, solo root puede ejecutar at
- Para dar permiso para todos los usuarios crear sólo el fichero at.deny vacío
Para crear trabajos que se ejecuten periódicamente se utilizan el demonio cron y el comando crontab
- crontab permite configurar los procesos periódicos
- cron se encarga de su ejecución
La utilización de cron se gestiona a través de los ficheros /etc/cron.allow y /etc/cron.deny
- el comportamiento si no existen los ficheros depende de la configuración del sistema
- en Debian, si no existen, todos los usuarios pueden usar crontab
Los trabajos se especifican en un fichero de crontab, que se guarda en /var/spool/cron/crontabs, y que puede tener tres tipos de líneas:
- Comentarios, que empiezan por #
- Definición de variables, de tipo nombre = valor
# shell usada para ejecutar los comandos
SHELL=/bin/bash
# Usuario al que se envía (por mail) la salida
# de los comandos (por defecto, se envían
# al propietario del fichero crontab)
MAILTO=pepe
- Especificación del trabajo y de la hora de ejecución, de la siguiente forma:
minuto hora día mes día_semana comando
- el día de la semana de 0 a 7 (0 ó 7 domingo)
- * indica cualquier valor
- se pueden indicar rangos, listas o repeticiones:
- 1-5 para indicar de lunes a viernes
- 0,15,30,45 para indicar cada 15 minutos
- 0-23/2 en el campo hora, indica realizar cada dos horas (0, 2, 4, etc.)
- Ejemplos:
- Borra el /tmp todos los días laborables a las 4:30 am
30 4 * * 1-5 rm -rf /tmp/*
- Escribe la hora, cada 15 minutos, durante la noche:
0,15,30,45 0-8,20-23 * * * echo Hora:$(date)»/tmp/horas
Comando crontab: crear y editar los trabajos periódicos
- Sintaxis:
crontab [-u usuario] {-l|-e|-r}
crontab [-u usuario] fichero
- en la segunda forma instala un nuevo crontab desde un fichero
- Opciones:
- -u usuario crea o maneja el crontab de un usuario específico (sólo root)
- -e edita el fichero crontab
- -l muestra el fichero crontab
- -r borra el fichero crontab
El demonio cron busca ficheros en /var/spool/cron para ejecutarlos a la hora indicada
- además también ejecuta las acciones indicadas en los ficheros /etc/crontab y en el directorio /etc/cron.d/
- estos ficheros suelen ser de mantenimiento del sistema
De esta forma, el administrador puede crear scripts que se ejecuten con periodicidad horaria, diaria, semanal y mensual
- sólo tiene que colocar esos scripts en los directorios /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly o /etc/cron.monthly
- la fecha y hora de ejecución de estos scripts se controla en el fichero /etc/crontab
Cron está pensado para sistemas funcionando 24/7
- Si el sistema está apagado a la hora de una acción cron, esa iteración no se realiza
- Problema en sistemas de sobremesa y/o domésticos
Solución complementaria: Anacron
Ejecuta asíncronamente tareas periódicas programadas
- Al iniciarse el sistema comprueba si hay tareas periodicas pendientes (que no se realizaron por estar el sistema apagado)
- De ser así, espera un cierto retardo y las ejecuta
Fichero de configuración: /etc/anacrontab
período retardo id_del_trabajo comando
- El período se especifica en días (o como @monthly) y el retardo en minutos:
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
@monthly 15 cron.monthly run-parts /etc/cron.monthly
- En este ejemplo, cada día, los scripts en cron.daily se ejecutan 5 minutos después de iniciar el anacron, cada 7 días (10 minutos de espera), se ejecutan los scripts en cron.weekly y cada mes (15 minutos) los de cron.monthly
Limitaciones de anacron
- Solo para uso del administrador
- Solo permite períodos de días (no vale para tareas que se deban ejecutar varias veces al día)
Administración de Sistemas e Redes <ASR.USC[at]gmail.com>
Tomás Fernández Pena <tf.pena[at]usc.es>
Última actualización: 19-10-15 11:23 por tomas
Curso de Administración de Sistemas y Redes por Tomás Fernández Pena se distribuye bajo la licencia Creative Commons Recoñecemento-Compartir baixo a mesma licenza. 3.0 España.
Trabajo original en persoal.citius.usc.es/tf.pena/ASR.