Por Paco Aldarias Raya
Email: pacolinux arroba inicia punto es
Web: http://aldarias.es/pacodebian
Con Linux Debian. En Valencia (España)
El documento tiene version .html, y .pdf, cambiando en el navegador la parte final podrás acceder a ambos.
Este documento es de libre reproducción siempre que se cite su fuente.
Realizado con: LATEX
Explicaremos como realizar ciertas tareas de forma automatica. Para ello utilizaremos el demonio cron.
Como root:
apt-get install cron
- Crond: Demonio q hay q arrancarlo al inicio.
- Crontab: Se le indica cuando y q hacer.
- Logs del cron: /var/log/cron
- Configuracion del cron: /etc/crontb
- Ver q se ejecuta: /var/log/messages
En el fichero /etc/profile y poner la linea:
export VISUAL=/bin/nano
Nota: Este script esta hecho para saber que conexiones tengo a internet establecidas: netstat -atu | grep ESTA
- Lo debe hacer cada 5 minutos.
- Guardarlo en un historico
- Anote el dia y la hora se creo el netstat.
- El historico se crea nuevo segun el dia.
Pasos:
1. Crear el fichero: netstat.sh
Creo el fichero: /home/paco/mislog/netstat.sh
Que contenga esto:
#!/bin/bash cd /mnt/hdd/pagina/logs/ # Voy a guardar los ficheros en /mnt/hdd/pagina/logs date >> netstat-$(date +%d-%m-%Y).txt # Anoto la fecha de hoy a la hora cat netstat.txt >> netstat-$(date +%d-%m-%Y).txt # Meto el netstat en el historico netstat -tupan | grep ESTA > netstat.txt # Obtengo el nuevo.
Le damos permisos de ejecución:
chmod 755 /home/paco/mislog/netstat.sh
0-59/5 * * * * paco /home/paco/mislog/netstat.sh
Ejecuta el fichero /home/paco/mislog/netstat.sh cada 5 minutos. El usuario seria paco
1.- Deberías usar una tabla cron para cada usuario.
La ubicación de estas tablas (crontabs) es, en mi sistema, /var/cron/tabs. En este directorio te creas una tabla llamada como el usuario, (p.ej. root para el usuario root :)). Puedes hacerlo simplemente copiando /etc/crontab a /var/cron/tabs/root
2.- Editas esta tabla haciendo login como el usuario (en nuestro caso root) haciendo crontab e
3. Quita todas las líneas de cron (del estilo 1 1 * * * lo-que-sea) que no te interesen para que sólo haga lo que quieres.
4. Inserta una línea según el formato del cron:
min. hora dia-mes mes dia-semana línea-comando
0 8 * * *
lo-que-quieras-ejecutar
Esto ejecutaría "lo-que-quieras-ejecutar" a las 8 de la mañana todos los
dias de todos los meses. (el *, evidentemente, quiere decir "siempre" ;)).
5.- Si lo que quieres es hacerlo cada tres horas usa el campo hora de la
siguiente forma
8,11,14,17,20,23,2,5
(hay una forma de hacerlo sin tanto número, pero es mas largo de explicar y
realmente da igual)
6.- y... OK! ya está lista la automatización de la tarea.
Mira man crontab
En /etc/crontab
añade 00 */3 * * * root script
de esta forma cada 3 horas cuando los minutos sean 0 se ejecutará.
También podrías poner 00 0,3,6,9,12,15,18 * * * root script Así se ejecuta a las 0:00 3:00 6:00, etc Las lineas del crontab son A B C D E usuario script A=Minutos B=Horas C=Dia del mes D=Mes E=Dia de la semana
Se tienen que cumplir las cinco condiciones para que se ejecute.
Si pones dia de la semana, dia del mes y mes, el script solo se ejecutara si estamos en esa fecha y ademas el dia de la semana coincide.
IMPORTANTE: Si es la ultima linea del fichero no olvides el return, ya que de lo contrario no funciona.
#!/bin/sh while : do sleep 60*60*3 # no me apetece multiplicar :) cosa_a_hacer done
Y se llama con: ./script
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html cron -split 0 -local_icons 1 -show_section_numbers -no_auto_link -no_navigation
The translation was initiated by Paco on 2007-05-02