La configuración de anacrontab. Linux y pecados capitales cuarta parte

Página del manual de anacron

Anacron permite ejecutar programas aunque la fecha indicada se haya pasado.

Estamos haciendo una lista de software y herramientas para Linux utilizado como guía la lista de los siete pecados capitales. Al igual que en los artículos anteriores usamos a la pereza como excusa para hablar de herramientas de automatización en Linux. Una de ellas en anacron.  En este artículo veremos cómo es la configuración de anacrontab. anacrontab es la que le indica a anacron qué es lo que debe hacer y cuándo hacerlo.

En anacron la fecha de las tareas se fija en días y, en caso de que el ordenador no esté funcionando al momento de ejecutar una tarea, esta se pone en marcha cuando este se pone en marcha.

La configuración de anacrontab

En principio anacron busca la lista de tareas a ejecutar en el directorio /etc/anacrontab. Las tareas deben escribirse en el siguiente formato:

período retraso identificador del trabajo comando donde:

  • período: Frecuencia con la que debe realizarse el trabajo. Puede expresarse en días (su abreviatura en inglés) lapso ( @daily, @weekly, o @monthly para día, semana o mes) o con números (1 para día, 7 para semana, 30 para mes y cualquier número para un período arbitrario de días.
  • retraso: La cantidad de tiempo a esperar antes de comenzar el trabajo. Por ejemplo 360 para ejecutar una tarea a las 6 de la mañana.
  • identificador del trabajo: Nombre asignado al trabajo para distinguirlo de los otros en los informes de errores y resultados
  • .

  • comando: Es la instrucción que debe ejecutar anacron en el momento señalado.

Como nuestra intención es usar anacron para tareas que no tienen que ver con la administración del sistema, vamos a replicar los directorios usados por cron en nuestra carpeta de usuario local. Lo hacemos con

mkdir -p ~/.local/etc/anacrontab: ~/.local/etc/cron.daily ~/.local/etc/cron.weekly ~/.local/etc/cron.daily  ~/.var/spool/anacron

Con esto creamos los directorios para guardar los distintos scripts diarios, semanales y mensuales, así como el lugar donde se va a guardar el informe de la última ejecución de anacron.

Para terminar, le indicamos a anacron que use nuestras carpetas de usuario local en lugar de las del sistema.

anacron -fn -t ~/.local/etc/anacrontab -S ~/.var/spool/anacron

Ahora vamos a editar un archivo de configuración. Lo hacemos desde la terminal con:

nano ~/.local/etc/anacrontab:

En el documento que se abre agregamos estas líneas:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Estas líneas cumplen las mismas funciones que ya explicamos para crontab. Indicar que debe usar Bash como intérprete de comandos y en que directorios encontrar los ejecutables. Guardamos el documento con May + 0 y lo cerramos con May +  X.

El nombre y la ubicación de las carpetas cron que creamos es una elección arbitraria. Yo opté por mantener los que se usan por defecto para no confundir a los lectores que requieran de información adicional de otras fuentes. Mientras en acrontab se indique la ruta al script se puede usar la carpeta y ruta de almacenamiento que se prefiera. Lo mismo vale para el identificador del trabajo.

Hay otras dos variables que podemos configurar:

  • START_HOURS_RANGE
  • : establece el rango de tiempo en el que se iniciarán los trabajos (es decir, ejecutar trabajos solo durante las siguientes horas).

  • RANDOM_DELAY
  • : esto define el retraso aleatorio máximo agregado al retraso definido por el usuario de un trabajo (por defecto es 45).

¿Cuál es la diferencia entre cron y anacron?

cron es lo que en los sistemas y derivados se conoce como un daemon es decir un programa que se ejecuta en segundo plano y sin intervención del usuario. Está pensado para servidores, es decir equipos que funcionan en forma casi permanente sin necesidad de que nadie esté prestándole atención, pero requiere frecuentes tareas de mantenimiento.

anacron  es un programa normal más apto para computadoras de escritorio que no están continuamente encendidas. Es por eso que, a diferencia de cron, donde la menor unidad de tiempo es el minuto, se trabaja con una frecuencia mínima de un día.

Por el mismo motivo, cron no incluye alternativas para el caso de que el equipo no esté encendid
o mientras que anacron repasa las tareas pendientes al iniciar sesión.  Cuando encuentra un trabajo no iniciado en el momento establecido, ejecutará el comando especificado en el campo de comando después de esperar el número de minutos indicado en el campo de retraso. Luego registrará la fecha en un archivo de marca de tiempo.

from Linux Adictos https://ift.tt/heKAbC4
via IFTTT

Sobre cron y anacron para perezosos. Linux y pecados capitales tercera parte

Archivo de crontab vació

Este archivo de crontab se usa para indicarle a cron las instrucciones que debe ejecutar.

En la tercera parte de esta serie de artículos en la que estamos usando a los siete pecados capitales como excusa para conocer herramientas y programas para Linux, comentaremos más sobre la configuración de cron y hablaremos de una alternativa

cron es un programa que funciona en forma autónoma para ejecutar tareas de mantenimiento del sistema en forma periódica. Las tareas están especificadas en un archivo de texto conocido como crontab.

Sobre cron y anacron

En los artículos anteriores comentamos la estructura de las instrucciones que hay que darle a cron. Ahora veremos una forma fácil de redactar el archivo crontab.

El comando crontab –e nos genera un archivo crontab casi en blanco. Solo hay unas líneas precedidas del signo del numeral (#). Este signo indica que son comentarios y no deben intentar ejecutarse. Podemos borrarlos o dejarlos.

Deberíamos comenzar agregando estas líneas:

SHELL=/bin/bash: Especifica que el shell que se debe utilizar para ejecutar los comandos es Bash. Un shell es un intérprete de comandos que permite que el usuario acceda a recursos del sistema.

MAILTO=una_dirección_de_mail: En las distribuciones para servidor es común que se especifique una dirección de correo electrónico para que los administradores reciban informes de errores. Por eso es la opción que cron utiliza por defecto para enviarlos. En los equipos de escritorio esa dirección no está configurada por lo que podemos hacerlo con esta variable.

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin: Esto nos evita tener que especificar la ruta al ejecutable de cada comando.

anacron

Cron es la más conocida de las herramientas de automatización, pero tiene el inconveniente que, si el ordenador se apaga o está suspendido, la tarea no se realiza hasta que se vuelve a la fecha preestablecida. Anacron. por el contrario, se ocupa de que al reanudar la sesión se pongan en ejecución las tareas que quedaron pendientes. El programa averigua cuándo fue la última vez que se ejecutó una instrucción y la frecuencia con que se le indicó que debería realizarse. La lista de trabajos pendientes se registra en un archivo de texto llamado en este caso anacrontab. A diferencia de cron y crontab la fecha se establece fijando un día, un retraso en minutos, un identificador de trabajo y el comando a ejecutar.

Para cada trabajo, Anacron verifica si este trabajo se ha ejecutado en los últimos n días, donde n es el período especificado para ese trabajo. Si no, Anacron ejecuta el comando de shell del trabajo, después de esperar el número de minutos especificado como el parámetro de retraso.

Después de que finaliza el comando, Anacron registra la fecha en un archivo de marca de tiempo especial para ese trabajo, para que pueda saber cuándo ejecutarlo nuevamente. Solo se usa la fecha para los cálculos de tiempo. No se utiliza la hora.

Podemos encontrar anacron bajo este nombre o como parte de otro paquete denominado cronie en los repositorios de las principales distribuciones Linux.

Parámetros de Anacron

-f: Ejecuta la tarea sin importar si es la fecha indicada.

-u: Cambia la fecha de los trabajos a la actual, pero no los ejecuta.

-s: Establece que solo se comenzará una tarea cuando se termine la anterior.

-n: Ejecuta el trabajo sin importar que sea la fecha. Activa el parámetro -s.

-d: No se ejecuta en segundo plano y los errores se genera como un mensaje de error estándar. El resultado de los trabajos se envía por mail. En caso de tratarse de un sistema de escritorio la dirección de mail se configura como indicamos más arriba.

-q: Evita que se generen mensajes de error estándar. Se usa junto con –d.

-t: En caso de que se quiera usar una lista de tareas diferente a la que se crea por defecto, este parámetro le indica a anacron cuál debe usar.

-T: Testea la lista de tareas para ver si está correctamente configurada. En caso de que no lo esté genera un mensaje de error.

-S Almacena marcas de tiempo en un directorio especificado para ser utilizadas por anacron.

En el próximo artículo veremos como configurar correctamente anacrontab

from Linux Adictos https://ift.tt/ysnfZ7C
via IFTTT

El uso de Cron para perezosos. Linux y pecados capitales segunda parte

tigre durmiendo

Si te da pereza hacer tareas repetitivas en tu ordenador, Cron las hace por ti.

Este es el segundo artículo de una serie en la que utilizamos la lista de lo que la Iglesia Católica denomina “pecados capitales” como excusa para conocer más sobre comandos y programas del mundo Linux. En este caso continuamos hablando sobre el uso de Cron que será de gran utilidad para quienes cultivan la pereza.
Dado que estamos viviendo una época de gente de ofensa fácil permítanme aclarar, antes de entrar en materia, que no es mi intención burlarme de las creencias religiosas de nadie. En todo caso es una auto burla. Pasé gran parte del año ochenta estudiando catecismo para luego de haber tomado la Primera Comunión no volver a pisar una iglesia salvo que algún acontecimiento familiar lo requiriera. Tengo que recuperar ese tiempo de alguna manera.

Para qué sirven Cron y Crontab

Habíamos dicho que Cron es un demonio, es decir un programa que se ejecuta en segundo plano sin que el usuario tenga intervención. Buscando información adicional para este artículo descubrí que lo de traducir daemon (La forma en que los sistemas Unix y derivados denominan a este tipo de programas) como demonio es un error muy extendido, pero no voy a corregirlo. Estamos hablando de pecados, tiene que haber por lo menos un demonio.

La función de Cron es ejecutar, en un momento especificado previamente, una determinada tarea. La mayoría de las veces es por necesidades del sistema, aunque los usuarios podemos indicarle otras a partir de la edición de un archivo de texto conocido como crontab.

En el post anterior habíamos dicho que los comandos para crear crontab son:

crontab –e para el usuario por defecto

O

crontab –u nombre_de_usuario para cualquiera de los otros.

Crontab es un archivo de texto que le brinda a Cron las instrucciones sobre qué debe hacer y cuando hacerlo.

Acerca del uso de Cron mediante crontab

Para crear nuestro crontab debemos tener en cuenta lo siguiente:

  • Se utiliza una línea para cada tarea.
  • Se debe indicar la fecha y hora de ejecución de la tarea. En caso de que se trate de una tarea que requiera periodicidad. Por ejemplo, todos los miércoles a las 5 de la mañana, el resto de los parámetros se reemplazan por asteriscos (*).
  • En caso de que se quiera asignar más de un valor para un determinado parámetro cada valor debe separarse por una coma.
  • Los parámetros se separan con un espacio.
  • Se debe conocer el directorio donde está el lanzador del comando

Por ejemplo, si queremos que el ordenador de nuestros hijos se apague todos los días a las 20, la instrucción sería.

0 20 * * * /sbin/shutdown

En caso de que busquemos que el apagado sea solo los domingos cambiamos la instrucción a

0 20 * * 0 /sbin/shutdown

Existen algunos atajos que nos ahorran tener que escribir todos los parámetros. Ellos son:

  • @hourly: Ejecuta un comando a la hora en punto. 
  • @daily: Ejecuta el comando al comienzo de cada día.
  • @weekly: Ejecuta el comando al comienzo del primer día de la semana.
  • @monthly: Ejecuta el comando al comenzar el primer día de cada mes.
  • @yearly: Ejecuta el comando en el primer minuto del año.

Algunos ejemplos del uso de este comando son:

@daily /bin/sh /ruta_al_script/nombre_del_script.sh ejecuta un script en Bash.

@hourly /bin/python3 /ruta_al_script/nombre_del_script.py ejecuta un script en python cada hora.

En todos los casos los scripts deberán tener permisos de ejecución.

En los ejemplos que vimos se indica no solo el comando sino también la ruta donde se encuentra el ejecutable. Vamos a trabajar con estos directorios:

  • /bin: Que contiene todas las aplicaciones necesarias para el funcionamiento del sistema.
  • /sbin: Aquí están las aplicaciones que el usuario raíz necesita para manejar el sistema.
  • /home: Donde se almacenan las aplicaciones de cada usuario.
  • /usr: Aquí se guardan aplicaciones y archivos instalados por los usuarios. Incluyen archivos con los nombres y funciones mencionados en esta lista.

En el próximo artículo veremos cómo mejorar la redacción de crontab y algunas otras herramientas de automatización disponibles para Linux.

from Linux Adictos https://ift.tt/rT3wLQn
via IFTTT

El uso de Cron para perezosos. Linux y pecados capitales segunda parte

tigre durmiendo

Si te da pereza hacer tareas repetitivas en tu ordenador, Cron las hace por ti.

Este es el segundo artículo de una serie en la que utilizamos la lista de lo que la Iglesia Católica denomina “pecados capitales” como excusa para conocer más sobre comandos y programas del mundo Linux. En este caso continuamos hablando sobre el uso de Cron que será de gran utilidad para quienes cultivan la pereza.
Dado que estamos viviendo una época de gente de ofensa fácil permítanme aclarar, antes de entrar en materia, que no es mi intención burlarme de las creencias religiosas de nadie. En todo caso es una auto burla. Pasé gran parte del año ochenta estudiando catecismo para luego de haber tomado la Primera Comunión no volver a pisar una iglesia salvo que algún acontecimiento familiar lo requiriera. Tengo que recuperar ese tiempo de alguna manera.

Para qué sirven Cron y Crontab

Habíamos dicho que Cron es un demonio, es decir un programa que se ejecuta en segundo plano sin que el usuario tenga intervención. Buscando información adicional para este artículo descubrí que lo de traducir daemon (La forma en que los sistemas Unix y derivados denominan a este tipo de programas) como demonio es un error muy extendido, pero no voy a corregirlo. Estamos hablando de pecados, tiene que haber por lo menos un demonio.

La función de Cron es ejecutar, en un momento especificado previamente, una determinada tarea. La mayoría de las veces es por necesidades del sistema, aunque los usuarios podemos indicarle otras a partir de la edición de un archivo de texto conocido como crontab.

En el post anterior habíamos dicho que los comandos para crear crontab son:

crontab –e para el usuario por defecto

O

crontab –u nombre_de_usuario para cualquiera de los otros.

Crontab es un archivo de texto que le brinda a Cron las instrucciones sobre qué debe hacer y cuando hacerlo.

Acerca del uso de Cron mediante crontab

Para crear nuestro crontab debemos tener en cuenta lo siguiente:

  • Se utiliza una línea para cada tarea.
  • Se debe indicar la fecha y hora de ejecución de la tarea. En caso de que se trate de una tarea que requiera periodicidad. Por ejemplo, todos los miércoles a las 5 de la mañana, el resto de los parámetros se reemplazan por asteriscos (*).
  • En caso de que se quiera asignar más de un valor para un determinado parámetro cada valor debe separarse por una coma.
  • Los parámetros se separan con un espacio.
  • Se debe conocer el directorio donde está el lanzador del comando

Por ejemplo, si queremos que el ordenador de nuestros hijos se apague todos los días a las 20, la instrucción sería.

0 20 * * * /sbin/shutdown

En caso de que busquemos que el apagado sea solo los domingos cambiamos la instrucción a

0 20 * * 0 /sbin/shutdown

Existen algunos atajos que nos ahorran tener que escribir todos los parámetros. Ellos son:

  • @hourly: Ejecuta un comando a la hora en punto. 
  • @daily: Ejecuta el comando al comienzo de cada día.
  • @weekly: Ejecuta el comando al comienzo del primer día de la semana.
  • @monthly: Ejecuta el comando al comenzar el primer día de cada mes.
  • @yearly: Ejecuta el comando en el primer minuto del año.

Algunos ejemplos del uso de este comando son:

@daily /bin/sh /ruta_al_script/nombre_del_script.sh ejecuta un script en Bash.

@hourly /bin/python3 /ruta_al_script/nombre_del_script.py ejecuta un script en python cada hora.

En todos los casos los scripts deberán tener permisos de ejecución.

En los ejemplos que vimos se indica no solo el comando sino también la ruta donde se encuentra el ejecutable. Vamos a trabajar con estos directorios:

  • /bin: Que contiene todas las aplicaciones necesarias para el funcionamiento del sistema.
  • /sbin: Aquí están las aplicaciones que el usuario raíz necesita para manejar el sistema.
  • /home: Donde se almacenan las aplicaciones de cada usuario.
  • /usr: Aquí se guardan aplicaciones y archivos instalados por los usuarios. Incluyen archivos con los nombres y funciones mencionados en esta lista.

En el próximo artículo veremos cómo mejorar la redacción de crontab y algunas otras herramientas de automatización disponibles para Linux.

from Linux Adictos https://ift.tt/rT3wLQn
via IFTTT