cron, crontab, run-parts
Para ejecutar una tarea cada minuto, utilizaremos crond, el daemon que lee las tareas programadas con crontab por cada usuario.
en Slackware, crond se inicia en modo multiusuario (/etc/rc.d/rc.M).
También Slack utiliza (por convención, no obligatoriamente) el comando run-parts, que sirve para ejecutar todos los scripts que se encuentren dentro de un directorio. Por defecto, en slack existen:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
o sea, un directorio para cada hora, cada día, cada semana y cada mes.
por defecto, el usuario root tiene el siguiente crontab (crontab -l)
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null
la clave de la organización está en utilizar el comando run-parts, ya que podemos tener por ejemplo 10 tareas que se ejecuten diariamente (10 scripts dentro de /etc/cron.daily), y en crontab con la entrada que se muestra, sería suficiente (run-parts ejecutaría los scripts que encuentre en /etc/cron.daily)
Por ejemplo, si quiero crear una tarea que se ejecute cada 1 minuto (la unidad mínima de tiempo), podria hacer lo siguiente:
* * * * * /usr/local/bin/scriptPrueba 1> /dev/null
y si tuviese que ejecutar otro script también cada 1 minuto, tendria que agregar
* * * * * /usr/local/bin/scriptPrueba 1> /dev/null
* * * * * /usr/local/bin/OtroscriptPrueba 1> /dev/null
esto lo podemos organizar moviendo ambos scripts (o creando enlaces simbólicos, según se necesite) a un directorio /etc/cron.cada1minuto, y reemplazar las lineas creadas en cron por la siguiente:
* * * * * /usr/bin/run-parts /etc/cron.cada1minuto 1> /dev/null