Trabajos no interactivos (comandos)

Filed under: by: Caballero

Para realizar este tipo de trabajos “fuera de horas”, como servicios periódicos o programados, hay diversos sistemas que nos permiten construir un tipo de agenda de tareas:

nohup es quizás el caso más simple utilizado por los usuarios, les permite la ejecución de una tarea no interactiva una vez hayan salido de su cuenta. Normalmente, al salir de la cuenta, el usuario pierde sus procesos; nohup permite dejarlos corriendo, a pesar den que el usuario se desconecte.

at nos permite lanzar una acción para más tarde, rogramando un determinado instante en el que va a iniciarse, especificándose la hora (hh:mm) y fecha, o bien si se hará hoy (today) o mañana (tomorrow). Ejemplos:

at 10pm tarea realizar la tarea a las diez de la noche.

at 2am tomorrow tarea realizar la tarea a las dos de la madrugada.


cron permite establecer una lista de trabajos por realizar con su programación; esta configuración se guarda en /etc/crontab; concretamente, en cada entrada de este fichero tenemos: minutos y hora en que se va a efectuar la tarea, qué día del mes, qué mes, qué día de la semana, junto con qué (ya sea una tarea, o bien un directorio donde estarán las tareas a ejecutar). Por ejemplo, de forma estándar el contenido es:
25 6 * * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.daily
47 6 * * 7 root test -e /usr/sbin/anacron || run-parts --report /etc/cron.weekly
52 6 1 * * root test -e /usr/sbin/anacron || run-parts --report /etc/cron.monthl

donde se está programando que una serie de tareas van a hacerse: cada día (““ indica ’cualquiera’), semanalmente (el 7.o día de la semana), o mensualmente (el 1.o de cada mes). Normalmente, los trabajos serían ejecutados por el comando crontab, pero el sistema cron supone que la máquina está siempre encendida, si no es así, es mejor utilizar anacron, que verifica si la acción no se realizó cuando habría debido hacerlo, y la ejecuta. En cada línea del anterior fichero se verifica que exista el comando anacron y se ejecutan los scripts asociados a cada acción, que en este caso están guardados en unos directorios asignados para ello, los cron.
También pueden existir unos ficheros cron.allow, cron.deny, para limitar quién puede colocar (o no) trabajos en cron. Mediante el comando crontab, un usuario puede definir trabajos en el mismo formato que hemos visto antes, que habitualmente se guardarán en /var/spool/ cron/crontabs. En el caso de la distribución Debian, existe también un directorio /etc/cron.d donde se pueden colocar trabajos y que es tratado como si fueran una extensión del fichero /etc/crontab.

0 comentarios: