Inicio    Contáctenos  Qué es DatoSoft Descargas


Datos y Software - Soluciones

 

DatoSoft


Datos y Software - Soluciones

 

 

Ir a otros temas...

 

Titulo del tema



INTRODUCCION

Pendiente de editar

CONTENIDO

 

 


A cron se le puede decir que ejecute tareas de varias maneras:

1. Por defecto, en el archivo /etc/crontab, está especificado que se
ejecuten los scripts en /etc/cron.daily, /etc/cron.monthly et. a ciertas
fechas y hora. Esta es la manera más fácil de automatizar algo: basta
con añadir un script a esos directorios, y se ejecutarán diariamente, o
mensualmente etc.

Ejemplo de /etc/crontab modificado:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
# (min hora etc) (user) (comando)
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
# Insertar una linea asi para colocar scripts en /etc/cron.d
# Esta por ejemplo ejecutaria cada minuto los scripts de ese directorio
#* * * * * root run-parts /home/fvel/automaticos
# aquí podria ir otra linea cualquiera
Ver al final una explicación sobre run-parts.

2. Colocando archivos que sigan el formato crontab, es decir el formato
del caso 1, en el directorio /etc/cron.d.
Estos archivos pueden llamarse de cualquier manera, pero deben tener el
formato adecuado, es decir, líneas parecidas a las de arriba.

Ejemplo, archivo basura.txt
* * * * * fvel /home/fvel/bin/algunprograma
Si no se coloca el user no funciona. (se puede consultar /var/log/cron
y aparece una línea ORPHAN tal.)

Los archivos cron colocados en este directorio permiten colocar cosas
adicionales a las diarias, semanales etc del primer punto. Aunque esto
es relativo, porque las lineas de los archivos aca, se podrían añadir a
las de /etc/crontab.

3. Invocando la orden crontab -e
Esto permite que cada usuario Linux cree sus propio crontab files.
Al dar esta órden aparece aparece el editor vi para editar o crear un
archivo similar a los de arriba pero con la diferencia que no se
requiere colocar el usuario como sexto campo en cada línea, debido a que
el archivo creado se graba automáticamente en /var/spool/cron con el
nombre del usuario que invoca al programa crontab.

En resumidas cuentas parece ser que la manera 1 es la mas sencilla y
satisface la mayoría de los casos, y para casos especiales utilizar la
manera 3, inclusive como usuario root.

PARA EVITAR PROBLEMAS:
Consultar /var/log/cron
Revisar /etc/allow.cron y deny. Si no existen no hay problema.

Los scripts si tienen redireccion, deben tener rutas absolutas porque si
no se hacen relativas al usuario, asi echo "hola...">>hola.txt crea el
archivo hola.txt pero en /root si root es el usuario.
Ojo que la salida de los comandos programados no sale por pantalla sino por mail
si esta especificado MAILTO=fvel

PROBLEMAS:

Si al ejecutar un script sale "Exec format error" es porque falta en la primera línea
#!/bin/sh

-------------------------------------------------------
El comando run-parts directorio
lo que hace es ejecutar todos los scripts que encuentre en ese
directorio, he aqui su codigo:

/usr/bin/run-parts
And here's what it looks like before it's all discected in the piece by
Jim Sack below. This is a good example of a shell script. Though the
topic of shell scripts is beyond the purposes of this book, it does help
illuminate how crontab is set up on a Red Hat Linux system, and give you
a quick view of a shell script. Este es el de mi redhat 9:

#!/bin/bash
# run-parts - concept taken from Debian

# keep going when something fails
set +e

# si el número de argumentos es menor que uno
if [ $# -lt 1 ]; then
echo "Usage: run-parts <dir>"
exit 1
fi

if [ ! -d $1 ]; then
echo "Not a directory: $1"
exit 1
fi

# Ignore *~ and *, scripts
for i in $1/*[^~,] ; do
[ -d $i ] && continue
# Don't run *.{rpmsave,rpmorig,rpmnew,swp} scripts
[ "${i%.rpmsave}" != "${i}" ] && continue
[ "${i%.rpmorig}" != "${i}" ] && continue
[ "${i%.rpmnew}" != "${i}" ] && continue
[ "${i%.swp}" != "${i}" ] && continue
[ "${i%,v}" != "${i}" ] && continue
# lo de awk imprimie el nombre del ejecutable. Ver awk.txt
if [ -x $i ]; then
$i 2>&1 | awk -v "progname=$i" \
'progname {
print progname ":\n"
progname="";
}
{ print; }'
fi
done
exit 0


Alguna documentacion:

RUN-PARTS

NAME SYNOPSIS DESCRIPTION COPYRIGHT
NAME

run-parts - run scripts or programs in a directory
SYNOPSIS

run-parts [--test] [--verbose] [--report] [--umask=umask] [--arg=argument] [--help] [--version] directory
DESCRIPTION

run-parts runs a number of scripts or programs found in a single
directory directory. Filenames should consist entirely of upper and
lower case letters, digits, underscores, and hyphens. Subdirectories of
directory and files with other names will be silently ignored.

Scripts must follow the #!/bin/interpretername convention in order to be
executed. They will not automatically be executed by /bin/sh.

The files found will be run in the lexical sort order of the filenames.

OPTIONS

--test

print the names of the scripts which would be run, but don't actually run them.

--verbose

print the name of each script to stderr before running.

--report

similiar to --verbose, but only prints the name of scripts which produce
output. The script's name is printed to whichever of stdout or stderr
the script first produces output on.

--umask=umask

Sets the umask to umask before running the scripts. umask should be
specified in octal. By default the umask is set to 022.

--arg=argument

Pass argument to the scripts. Use --arg once for each argument you want passed.

--

Specifies that this is the end of the options. Any filename after --
will be not be interpreted as an option even if it starts with a hyphen.

--help

Display usage information and exit.

--version

Display version and copyright and exit.
COPYRIGHT

Copyright (C) 1994 Ian Jackson. Copyright (C) 1996 Jeff Noxon. Copyright (C) 1996,1997,1998