Cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos 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.
Cron se podría definir como el “equivalente” a Tareas Programadas de Windows.
yum install vixie-cron.i386Código HTML:Instalación (en centos)
Comandos de Cron:
-e (editar el crontab)Código HTML:crontab [-u usuario] [ -e | -l | -r ]
-l (listar los cron)
-r (borrar los cron configurados)
-i (pregunta antes de borrar los cron configurados)
-s (selinux context)
Por ejemplo, si queremos listar los cron que tiene el usuario ususario1:
Si tenemos creado el fichero cron, podemos añadirlo al usuario de este modo crontabCódigo HTML:crontab -u usuario1 -l
Código HTML:[-u user] fileSi no especificamos el usuario con la opción -u, estaremos editando los cron de rootCódigo HTML:crontab -u usuario1 /home/usuario1/cron
Restringir el uso del comando cron:
Es posible permitir o denegar a los usuarios la creación de estas tareas. Para ello hay que editar el fichero cron.allow (para permitir) y cron.deny (para denegar).
Simplemente, habría que poner los usarios uno en cada línea. Suelen estar estos ficheros en /etc/
Fichero crontab
Al editar el cron de un usuario, con la opción “-e” nos abrirá el editor definido en la variable de entorno. Si queremos cambiar el editor por defecto, debemos especificarlo en .bashrc de tu usuario o de root, con estas líneas:
No hay que olvidarse de recargar el bashrc:Código HTML:export VISUAL="vim" export EDITOR="vim"
En el fichero crontab, podemos especificar algunas variables como son:Código HTML:source ~/.bashrc
SHELL - indica el entorno ‘shell’ en la que se ejecuta el cron
PATH – especifica la/s ruta/s donde buscará los binarios a ejecutar
MAILTO - cuenta de email, donde se mandará un correo al finalizar la tarea
HOME – directorio raiz que tomara el cron
Por ejemplo:
Su sintaxis, es muy sencilla. Esta compuesto de 5 dígitos o asteríscos “*” separados por espacio y el comando a ejecutar.Código HTML:SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/
Hay que puntualizar, que se pueden poner varios valores en un mismo ‘campo’ de esta forma:Código HTML:########################################################## #minuto (0-59), # #| hora (0-23), # #| | día del mes (1-31), # #| | | mes (1-12), # #| | | | día de la semana (0-6 donde 0=Domingo) # #| | | | | comandos # ########################################################## 15 02 * * * /script/actualiza.sh
Se ejecutaría el comando who todas las horas, en los minutos 2, 10, 20 y 45
También es posible usar “/x” en los minutos, horas, días para indicar un intervalo, cada x minutos, cada x horas, cada x diás.Código HTML:2,10,20,45 * * * * /usr/bin/who
Ejecutar el comando who cada 5 minutos:
Para evitar que nos mande el email una vez haya completado la tarea, podemos redirigir la salida de este modo.Código HTML:*/5 * * * * /usr/bin/who
Cada dos horas, borrar los ficheros temporal*:
Si nos resulta útil, también podemos redirigir la salida a un fichero de texto de este modo, a modo de log:Código HTML:* */2 * * * rm -f /home/usuario1/tmp/temporal* > /dev/null 2>&1
Todos los días a las 5:00, listaría los ficheros de la carpeta /home/usuario1/tmp/
Es muy importante poner dos “>>” para que cada vez escriba al final del archivo, ya que de poner sólo uno “>”, cada vez que se ejecute nos macharía la salida anterior. También hay que tener en cuenta la salida del cron ya que de ser muy grande, podemos crear un log de mucho tamaño.Código HTML:0 5 * * * ls -las /home/usuario1/tmp/ >> /home/usuario1/cron.txt
Por último, recordar que el signo # sirve para comentar, tanto una linea que no queremos que se ejecute, como algún comentario que hayamos puesto.







Citar
