Espacio Daycry - Espacio de programación

  • Inicio
  • Categorias
    • - Codeigniter
    • - Symfony
    • - HTML5
    • - Linux / Ubuntu
    • - PHP
    • - Jquery
  • PortFolio - Proyectos Codeiniter
    • - Encuestas Online
    • - Estadísticas - GLPI
    • - Gestión de colas
    • - Web Service - REST
Mostrando entradas con la etiqueta Cron. Mostrar todas las entradas
Mostrando entradas con la etiqueta Cron. Mostrar todas las entradas

jueves, 14 de julio de 2016

Running PHP Script From Cron

No hay comentarios : Posted by daycry at 18:13 Labels: Cron , Crontab , Linux , PHP , Ubuntu


OVERVIEW

Cron is a job based scheduler used in Unix type operating systems. It allows you to schedule tasks to be run at given intervals such as scheduling a php script to run weekly, every second day, hourly, every 3 minutes, weekends, and so on.
In this article, I will show how easy it is in running a php script from cron. It will also show you how you can run a php script via a url using wget.

RUNNING PHP SCRIPT FROM CRON

I will show you 3 ways on running php script from cron which are:
  1. Running php script via command line in cron
  2. Running php script via php5-cgi in cron
  3. Running php script remotely via website url in cron
Running a php script usually requires the php script to have execute permissions set. Running PHP script from cron is usually a matter of specifying the file and as long as the script has execute permissions (i.e. chmod +x) then all should be good. Here are three ways I have found work very well.

RUNNING PHP SCRIPT ON COMMAND LINE FROM CRON

In order for the script to run correctly you should add the following to your php script. The informs the bash what type of script it is executing.
  1. #!/usr/bin/php
  2. <?php
  3. //.. your code follows here
Next we add the entry into cron.
  1. # you could output to a file by changing /dev/null to /some/file/to/save.log
  2. */10 * * * * /home/user/scripts/updatesomething.php > /dev/null
Note we didn’t need to execute the script via php (/usr/bin/php /path/to/script.php) since we added the header to the php script.

RUNNING PHP SCRIPT VIA PHP5-CGI IN CRON

To execute the php script from cron you need to have php5-cgi installed. You can install this on Debian use “apt-get install php5-cgi” or the equivalent command for your distribution of linux.
  1. # PHP5-CGI: execute the php script every 2 minutes and send output to /dev/null
  2. # you could output to a file by changing /dev/null to /some/file/to/save.txt
  3. */2* * * * php5-cgi -q /home/user/scripts/parselogs.php > /dev/null

RUNNING PHP SCRIPT VIA WEBSITE URL IN CRON

And lastly we will use wget from the cron to download a website url and thus, execute the url that the php script is located at. We do this in the cron to allow the url to be downloaded at set times. To use wget, you need to install itwget using “apt-get install wget” or the equivalent command for your distribution of linux.
  1. # wget will visit the url but won't save the file. send it to /dev/null
  2. # this executes the script as if you visited the link in your browser
  3. 0 * * * * wget -O /dev/null http://www.example.com/some_cron_script.php
And there we go, your php script will be run by cron on time, every time.
Read More

lunes, 14 de diciembre de 2015

Creating MySQL Backups With AutoMySQLBackup

No hay comentarios : Posted by daycry at 12:23 Labels: automysqlbackup , Cron , Linux , MySQL , Ubuntu

AutoMySQLBackup is a shell script that lets you take daily, weekly and monthly backups of your MySQL databases using mysqldump. It can back up multiple databases, compress the backups, back up remote databases, and email the logs. This tutorial explains how to install and use it on an Ubuntu 9.10 server.
I do not issue any guarantee that this will work for you!

1 Preliminary Note

AutoMySQLBackup uses mysqldump to create SQL dumps of your databases. Please note that mysqldump will lock your databases while the backup is being created, and this can take from less than a second up to a few minutes, depending on the size of your database. If you're running a high-traffic web site with a large database, then AutoMySQLBackup is not for you!
This script will not help in the event of a hard drive crash. You should copy your backups offline regularly for best protection.
I'm running all the steps in this tutorial with root privileges, so make sure you're logged in as root:
sudo su

2 Using AutoMySQLBackup

You can install AutoMySQLBackup as follows:
aptitude install automysqlbackup
Then open /etc/default/automysqlbackup and take a look at the configuration options. They are all well explained. You should at least configure the following settings:
vi /etc/default/automysqlbackup
[...]
# Host name (or IP address) of MySQL server e.g localhost
DBHOST=localhost
[...]
# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
# The following is a quick hack that will find the names of the databases by
# reading the mysql folder content. Feel free to replace by something else.
#DBNAMES="db_ispconfig web1 web2 web3"
DBNAMES=`find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `
[...]
# Backup directory location e.g /backups
# Folders inside this one will be created (daily, weekly, etc.), and the
# subfolders will be database names.
BACKUPDIR="/var/lib/automysqlbackup"
[...]
# Email Address to send mail to? (user@domain.com)
MAILADDR="user@domain.com"
[...]
DBNAMES can contain one or multiple databases, separated by spaces.
If BACKUPDIR does not exist, automysqlbackup will create it automatically (the default directory is /var/lib/automysqlbackup).
If you want to back up local databases, use localhost; if you want to back up remote databases, use the remote hostname (please note that the remote database server must be configured to allow remote connections!).
Now you can run automysqlbackup:
automysqlbackup
Take a look at the /var/lib/automysqlbackup directory...
ls -l /var/lib/automysqlbackup
... and you should find three subdirectories, daily, weekly, and monthly:
root@server1:~# ls -l /var/lib/automysqlbackup
total 12
drwxr-xr-x 4 root root 4096 2010-01-27 17:20 daily
drwxr-xr-x 2 root root 4096 2010-01-27 17:20 monthly
drwxr-xr-x 4 root root 4096 2010-01-27 17:20 weekly
root@server1:~#
These directories will contain subdirectories named after the databases you chose to backup. For example, if you chose the database db_ispconfig, there will be a directory /var/lib/automysqlbackup/daily/db_ispconfig containing the database dump:
ls -l /var/lib/automysqlbackup/daily/db_ispconfig/

root@server1:~# ls -l /var/lib/automysqlbackup/daily/db_ispconfig/
total 40
-rw------- 1 root root 37016 2010-01-27 17:20 db_ispconfig_2010-01-27_17h20m.Wednesday.sql.gz
root@server1:~#
The .gz extension means it's compressed. To restore a database, you'd first have to uncompress the dump:
gunzip /var/lib/automysqlbackup/daily/db_ispconfig/db_ispconfig_2010-01-27_17h20m.Wednesday.sql.gz
... (this will give you the uncompressed dump named db_ispconfig_2010-01-27_17h20m.Wednesday.sql in the/var/lib/automysqlbackup/daily/db_ispconfig/ directory) and then restore it as described onhttp://www.howtoforge.com/faq/6_4_en.html.
Of course, you don't want to run automysqlbackup manually all the time. Fortunately, there's a cron job for this in/etc/cron.daily/automysqlbackup which takes care of running automysqlbackup automatically once per day.
Read More

martes, 20 de octubre de 2015

Linux - Cron & Crontab

No hay comentarios : Posted by daycry at 14:14 Labels: Cron , Crontab , Linux , Ubuntu

¿QUÉ ES CRON?

El nombre cron viene del griego chronos que significa “tiempo”. En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab.

CÓMO FUNCIONA

El demonio cron inicia de /etc/rc.d/ o /etc/init.d dependiendo de la distribucion. Cron se ejecuta en el background, revisa cada minuto la tabla de tareas crontab/etc/crontab o en /var/spool/cron en búsqueda de tareas que se deban cumplir. Como usuario podemos agregar comandos o scripts con tareas a cron para automatizar algunos procesos. Esto es util por ejemplo para automatizar la actualizacion de un sistema o un buen sistema de respaldos.

¿QUÉ ES CRONTAB?

Crontab es un simple archivo de texto que guarda una lista de comandos a ejecutar en un tiempo especificado por el usuario. Crontab verificará la fecha y hora en que se debe ejecutar el script o el comando, los permisos de ejecución y lo realizará en el background. Cada usuario puede tener su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab del usuario root, cuando los usuarios normales (e incluso root) desean generar su propio archivo de crontab, entonces utilizaremos el comando crontab.
Crontab es la manera mas sencilla de administrar tareas de cron en sistemas multiusuario, ya sea como simple usuario de sistema o usuario root.

UTILIZANDO CRONTAB

Vamos empezando con un ejemplo simple.
Vamos a automatizar la actualización de un sistema, para eliminar la molesta de “siempre tengo que andar actualizando y eso no me gusta!”.
Primero que nada haremos un script. Este script será llamado por cron y contendrá todas las instrucciones que queremos que haga, por lo tanto es necesario probarlo en varios casos y de varias formas antes de incluirlo a cron, un sencillo script de actualizacion como este:
#!/bin/bash
#script ejemplo de actualizacion
#elija su distribucion
#debian-ubuntu
#apt-get update & apt-get -y upgrade
#fedora
#yum -y update
#Arch
#pacman --noconfirm -Syu
Quitale el # a la línea de tu distro. En caso de que sea Ubuntu/Debian, a la que empieza  con apt-get.
Guardamos el script como actualizacion.sh (ej. directorio scripts tu home). Cambiamos los permisos de ejecucion del dichoso script con:
chmod a+x ~/scripts/actualizacion.sh
Ejecutamos el script un par de veces para verificar que todo ejecute sin problemas, modificamos lo necesario (no debe contener errores, si no cron solo repetira un error una y otra vez). Ahora a agregar la tarea a nuestro crontab.

AGREGAR TAREAS A CRONTAB

Ejecutamos la edición del crontab con crontab -e, en algunas distros (como ubuntu) nos da la opcion de elegir el editor de textos que deseemos, los demás nos quedamos con vi. El archivo crontab lucirá algo asi.
# m h dom mon dow user command
donde:
  • m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59
  • h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.
  • dom hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15
  • dow significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.
  • user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.
  • command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo:/home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable
Para que quedara claro unos cuantos ejemplos de tareas de cron explicados:
15 10 * * * usuario /home/usuario/scripts/actualizar.sh
Ejecutará el script actualizar.sh a las 10:15 a.m. todos los días
15 22 * * * usuario /home/usuario/scripts/actualizar.sh
Ejecutará el script actualizar.sh a las 10:15 p.m. todos los días
00 10 * * 0 root apt-get -y update Usuario root
Ejecutará una actualización todos los domingos a las 10:00 a.m
45 10 * * sun root apt-get -y update
Usuario root ejecutará una actualización todos los domingos (sun) a las 10:45 a.m
30 7 20 11 * usuario /home/usuario/scripts/actualizar.sh
El día 20 de noviembre a las 7:30 el usuario correra el script
30 7 11 11 sun usuario /home/usuario/scripts/pastel_con_velitas.sh
El día 11 de noviembre a las 7:30 a.m. y que sea domingo, el usuario festejará su sysadmin (o sea a mí)
01 * * * * usuario /home/usuario/scripts/molestorecordatorio.sh
Un molesto recordatorio cada minuto de cada hora todos los días (NO recomendable).
Igual se pueden manejar rangos especiales:
30 17 * * 1,2,3,4,5
A las 5:30 de la tarde todos los días de lunes a viernes.
00 12 1,15,28 * *
A las 12 del día todos los días primero, quince y 28 de cada mes (ideal para nóminas)
Si esto resulta confuso, crontab maneja cadenas especiales para definir estos rangos.
@reboot Ejecuta una vez, al inicio
@yearly ejecuta sólo una vez al año: 0 0 1 1 *
@annually igual que @yearly
@monthly ejecuta una vez al mes, el día primero: 0 0 1 * *
@weekly Semanal el primer minuto de la primer hora de la semana. 0 0 * * 0″.
@daily diario, a las 12:00A.M. 0 0 * * *
@midnight igual que @daily
@hourly al primer minuto de cada hora: 0 * * * *
Su uso es muy sencillo.
@hourly usuario /home/usuario/scripts/molestorecordatorio.sh
@monthly usuario /home/usuario/scripts/respaldo.sh
@daily root apt-get update && apt-get -y upgrade
Por último y no menos importante:
Administracion de trabajos en cron
crontab archivo
Remplaza el existente archivo crontab con un archivo definido por el usuario
crontab -e
Editar el archivo crontab del usuario, cada linea nueva sera una nueva tarea de crontab.
crontab -l
Lista todas las tareas de crontab del usuario
crontab -d
Borra el crontab del usuario
crontab -c dir
Define el directoriod e crontab del usuario (este debe tener permisos de escritura y ejecucion del usuario)
crontab -u usuario
prefijo para manejar el crontab de otro usuario, ejemplos:
$ sudo crontab -l -u root
$ sudo crontab -e usuario2
#crontab -d -u usuario
Read More
Entradas antiguas Inicio
Suscribirse a: Entradas ( Atom )

Sígueme en las Redes Sociales



Follow @daycry9

Daycry web


Donaciones

Suscribirse a

Entradas
Atom
Entradas
Comentarios
Atom
Comentarios

Datos personales

daycry
Ver todo mi perfil

Entradas populares

  • Crear archivos PHP ejecutables por terminal UBUNTU
    En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
  • Pâginación PHP con Librería Zebra Pagination
    En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
  • PHPExcel - Codeigniter
    Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
  • PHP- Operaciones con fechas - Sumar Horas, minutos y segundos
    Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
  • Codeigniter - Múltiples conexiones a base de datos
    Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...

© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool