Interfaces gráficas (GUI) para administrar tareas programadas en Linux

En un principio crear tareas programadas en Linux es algo relativamente sencillo, ya sea modificando ficheros de cron de sistema en localizaciones específicas (ej.: /etc/cron.d/daily) o bien mediante herramientas como crontab, at… Además en la mayor parte de ocasiones contaremos con una terminal para trabajar y poco más, pero es interesante saber que tenemos a nuestra disposición herramientas adicionales que pueden resultarnos útiles en un momento dado.

Como decía, la estructura de un crontab de usuario tiene un formato específico tal que:

 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                            
 |  |  |  |  |
 *  *  *  *  *	/home/bob/miscript.sh	

Para modificarlo podemos definir el editor de texto que utilizaremos con la variable de entorno EDITOR. Por ejemplo, para vi haríamos:

export EDITOR=vi

Para otros casos como nano el procedimiento sería igual. Posteriormente entrar en la edición de contrab del usuario con el que estamos trabajando con la opción -e:

crontab -e

Posteriormente para listar:

crontab -l

Y podemos borrarlo por completo con:

crontab -r

Si somos root, podremos acceder fácilmente al crontab de otros usuarios, tanto para listarlos como editarlos:

crontab -u [usuario] -l
crontab -u [usuario] -e

Con esto tan simple que comento bastaría para gestionar el crontab de un usuario teniendo claros ciertos conceptos sobre la administración de Linux sobre los que no me voy a centrar ahora.

Alternativas a la terminal hay varias, y podremos echar mano de ellas según nos resulten útiles en un momento dado. Por una parte tenemos utilidades web como corntab donde podremos definir todos los parámetros de crontab de una manera sencilla y visual.

Corntab, utilidad gráfica web para crontab

Corntab, utilidad gráfica web para crontab

Una vez tengamos definidos los tiempos y el comando a ejecutar, podremos copiar y pegar en nuestra terminal cuando estemos editando crontab en nuestro sistema, o bien mandarlo por correo para tenerlo disponible desde el mismo en otro momento.

Otra utilidad que me ha gustado bastante es GNOME Schedule. En Debian la podéis instalar fácilmente con:

apt-get install gnome-schedule 

En CentOS o similares basadas en Red Hat la cosa no es tan sencilla, ya que en los repositorios básicos no tenemos disponible el programa en cuestión. Para ello tendréis que añadir los repos RPMForge de DAG. Una vez tengáis el paquete .rpm correspondiente en función de vuestra arquitectura y versión de distro, lo instaláis. Por ejemplo para CentOS 7 64 bits:

rpm -Uvh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

Posteriormente añadís la clave pública GPG de las repos con:

wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt

Ya podréis instalar con:

yum install gnome-schedule 

Una vez instalada podremos encontrarla con el nombre “scheduled tasks”. La aplicación es muy intuitiva y nos permite organizar tanto tareas programadas de cron (“recurrent task”), at (“one time task”) o incluso crear plantillas para después poder utilizarlas en otros sistemas Unix o Linux.

Gnome Schedule

Gnome Schedule

Tareas programadas (cron) con Gnome Schedule

Tareas programadas (cron) con Gnome Schedule

En KDE tenemos su equivalente en kcron, que cumple prácticamente el mismo cometido permitiéndonos crear tareas programadas de una o reiteradas ejecuciones. Aparte de estas utilidades, tendremos también soluciones integradas en otros paquetes de software más generalistas. Hablo por ejemplo de paneles de administración como webmin, o incluso especializados en entornos de administración de hosting como cpanel o ajenti. En cualquier caso, y especialmente a los que nos gusta la sencillez, la terminal siempre es un lugar donde se acaba volviendo.