Comando at
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
- el entorno actual también se salva
- al terminar, la salida estándar se envía como un mail al usuario
- el trabajo no se para al salir de la sesión
- Ejemplo:
$ at 11:45
warning: commands will be executed using /bin/sh
at> ls /tmp > lista
at>
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
- Ficheros /etc/at.allow y /etc/at.deny
- 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
Procesos periódicos
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
- 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
Fichero 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:
- Borra el /tmp todos los días laborables a las 4:30 am
0,15,30,45 0-8,20-23 * * * echo Hora:$(date)»/tmp/horas
Comando crontab
Para crear y editar los trabajos periódicos se puede utilizar el comando crontab- 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
Fichero /etc/crontab y /etc/cron.d
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
- 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