Programar tareas con Cron y uso de Scripts

zPanel nos permite agregar tareas programadas desde el panel de control, sin embargo no nos permite especificar el tiempo de ejecución a nuestro gusto y además si las tareas  son algo compleja pueden dar error durante la ejecución. Es por ello que prefiero programar las tareas a mano añadiéndolas al fichero crontab y que este a su vez ejecute unos Scripts con los comandos que queramos.

cron-zpanel

Para hacerlo es muy sencillo, solo hay que abrir el fichero /etc/crontab  y añadir la tarea que queramos. En la cabecera del fichero viene una ayuda sobre como se hace:

crontab

En la captura se puede ver como hay una tarea que borra el contenido de un directorio, esta tarea se ejecuta en el minuto 0 de la hora 0 de cualquier dia del mes, de cualquier mes, cuyo dia de la semana sea domingo… es decir todos los domingos a las 12 de la noche en punto, esta ejecución la hace ademas con el usuario root.

En vez de poner el comando directamente, que no hay ningún problema en ello salvo que sea complicado, podemos indicar que ejecute un Script y que este contenga todos esos comandos, como por ejemplo:

crontab2

En este segundo ejemplo la tarea cron programada se ejecuta a las 12:15 horas del dia 1 de cualquier mes o dia de la semana, es decir, todos los dia 1 del mes a las 12:15. Y lo que hace la tarea es ejecutar un Script ubicado en el directorio indicado. Este Script es importante que tenga permisos de ejecución (comando: chmod u+x script.sh ) y que comience con la linea: # !/bin/bash .

Como ejemplo de Script «complicado» esta este que copia las bases de datos en un directorio:

Que lo que hace es:

  1. Cambia el directorio de trabajo.
  2. Crea una copia de una base de datos a  un fichero.
  3. Comprime el fichero dándole el nombre de la fecha.
  4. Elimina el fichero no comprimido.

Como punto 0 en otros Scripts tengo además que se eliminen las copias de seguridad antiguas, en el caso de las de SQL lo prefiero hacer a mano.

Y con eso esta todo, solo nos faltaría reiniciar el servicio crond para que lea el fichero con la nueva tarea programada con el comando  /etc/init.d/crond restart

 

Edit:

Es importante que el caracter de fin de linea sea el usado en Unix y no el de Windows, si no al ejecutar los scrips nos mostrara mensajes de error, aunque los comandos funcionaran perfectamente. Para ello desde el Notepad++ hay que ir a Editar > Conversión Fín de línea > Convertir a formato UNIX

fin-linea-unix

Escriba aquí su comentario