¿Conocías… crontab y gnome-schedule?

16 05 2007

¿Qué hacéis cuando queréis ver un programa de TV y no vais a estar en casa? Programar el vídeo. ¿Y cuando tenéis una cita que no queréis olvidar? Programar la agenda, móvil, reloj… ¿Y cuando queréis dormiros fresquitos en verano y no queréis que el aire acondicionado o el ventilador esté toda la noche encendido? Programarlo. ¿Y cuando queréis dormiros con la TV o la radio puesta y queréis que se apague en una hora? Programarlo.

Es una función muy simple pero de una gran utilidad. Debéis saber que en Ubuntu (y cualquier distro con GNOME) hay una aplicación para programar cuándo ha de abrirse o cerrarse un programa. Poneros en situación: estáis descargando algo, tenéis que apagar el ordenador cuando acabe pero os tenéis que ir ya. Se programa para que se apague cuando queráis y listo. Todo gracias a crontab y gnome-schedule.

crontab es un pequeño programa de consola que se usa tradicionalmente para automatizar ciertas tareas. Imaginemos que no apagamos nunca el ordenador y que una vez al día debe hacer una tarea pesada. Para que no influya en el rendimiento mientras lo estamos usando, lo podemos programar para que lo haga todos los días mientras durmamos.

Por otro lado gnome-schedule es una interfaz gráfica que usa dicho programa, de tal forma que es mucho más fácil programar nuestras tareas: Indicamos la periodicidad, la fecha, la hora, el minuto, el día, mes y año… Incluso podemos definirlo como una plantilla que queramos usar más veces, añadiendo una descripción y un icono.

Instalación

Pero comencemos por el principio, vamos a instalarlo. crontab suele venir instalado por defecto en la mayoría de distros, en Ubuntu ya lo tendréis. El interfaz gráfico no, pero como todo lo que encontréis en esta sección tan sencillo como:

$ sudo aptitude install gnome-schedule

Ejecución

Ahora abrámoslo. Para ello tenemos dos opciones:

  • Mediante menú: Aplicaciones > Herramientas del Sistema > Horario
  • Ejecución directa: Alt+F2 y dentro escribimos gnome-schedule

Se nos abrirá una ventana como esta:

Como veis es bien simple. Básicamente lo que tenemos delante es un botón para una nueva tarea, otro para ver una existente, otro para borrarla y una lista de las tareas programadas.

Os voy a poner varios ejemplos distintos entre ellos de uso de esta aplicación.

Ejemplo 1: Despertarse con música

Supongamos que tenéis el ordenador en el dormitorio (o donde quiera que concileis el sueño xD) y que no lo apagáis. Una buena forma de levantarse es con música. Personalmente lo primero que hago al despertarme es ponerme música.

Una buena forma de tener el ordenador a modo de despertado con la música es precisamente programándolo para que inicie el reproductor a la hora que nos queremos despertar.

Abrimos el gnome-schedule y le damos al botón Nuevo. Nos preguntará si queremos programar una tarea que sólo se ejecutará una vez, o tendrá cierta periodicidad. La que nos interesa es la primera, así que vamos allá.

En la descipción pondremos por ejemplo «Despertador». Icono poned el que queráis si queréis, tampoco es obligatorio. En la repetición, pues cada día si es una alarma diaria y en el comando, pues como vimos en este tutorial, escribiremos…

xmms -t

…para abrir y a la vez reproducir xmms. Os quedará algo parecido a esto:

Nos falta programar la hora y fecha. Vamos a la pestaña «Avanzado». A priori queremos que nos espierte todos los días de todos los meses a las 9:00. Así que la configuración sería esta:

Los ‘*’ funcionan a modo de comodín para indicar «cualquier…» minuto, hora, día, mes, etc. Os podéis ayudar del botón «Seleccionar» donde tenéis más opciones, aunque esto también os puede echar un cable:

  • Minutos: 0..59
  • Hora: 0..23
  • Día del mes: 1..31
  • Día de la semana: 0..7 (0 y 7 es el domingo)
  • Mes: 1..12

Configuradas ambas pestañas le damos a «Aceptar» y nos aparecerá la tarea en la lista de las tareas programadas. Ya tenemos nuestro despertador listo.

Ejemplo 2: Dormirse con música

Es el ejemplo contrario. Supongamos ahora que tenemos el ordenador cerca de donde contamos ovejitas y lo dejamos encendido mientras lo hacemos. Supongamos también que las ovejitas que contamos bailan en lugar de saltar una valla. Sin embargo tampoco queremos que la música suene para siempre pues en un cambio de ritmo de una canción nos podemos despertar. Queremos programar que se apague nuestro XMMS.

El procedimiento es el mismo que el anterior. Supongamos ahora, para cambiarlo un poco, que esto sólo lo vamos a hacer hoy. Le damos a «Nuevo» y elegimos la segunda opción.

En la primera pestaña pondríamos como descripción «Ovejitas» por ejemplo y como script…

xmms -s

… que es el comando del stop para xmms. Si quisiéramos cerrar el reproductor directamente…

xmms -q

Si ahora vamos a la otra pestaña (Fecha y Hora), vemos que es mucho más simple que la anterior. Supongamos que nos dormimos a las 2 de la noche y queremos que se pare a las 2:30 del día 17 (hemos pasado las 00:00). Para cambiarlo podemos seleccionar el día en el calendario y usar las flechas para cmabiar la hora y los minutos, o bien editarlo todo a mano en la caja de texto de «Fecha». Nos quedará algo así:

 

Ejemplo 3: Apagar el ordenador

Supongo que muchas veces nos hemos encontrado en la situación de estar descargando algo, tener que salir o irnos a dormir y a la vez apagar el ordenador. Una buena solución a esto es dejar el ordenador descargando y programarlo para que se apague a una hora determinada.

Si nuestro gestor de descargas o programa p2p nos dice que falta una hora, pues calculamos hora y media (30 minutos de margen de error, o el que veais) y con el fichero ya descargado, el ordenador se apagará.

En vuestra mano os dejo ahora elegir si esta tarea es periódica o esporádica, ya sabéis cómo hacerlo pues ya lo hemos visto en los otros dos ejemplos. La novedad de este otro reside en que el comando que vamos a usar necesita de privilegios de administrador. Es decir, si programáis esta tarea con vuestro usuario, no hará nada porque no tenéis permiso para hacerlo.

Lo que vamos a hacer es programarlo como tarea de superusuario. En lugar de abrir gnome-schedule con vuestra cuenta lo haremos como superusuario. Pulsad Alt+F2 y escribid dentro: «gksu gnome-schedule». De esta forma se nos abrirá el programador de tareas pero del superusuario.

Ahora sí podéis programarla como queráis y sí tendrá efecto llegada la hora en cuestión. El comando que tenéis que poner es:

shutdown -h now

Ejemplo 4: Cerrar cualquier aplicación

Hemos visto en el segundo ejemplo una tarea que cierra xmms. Es fácil ya que este programa tiene un argumento (-q) para indicarle que queremos cerrarlo. Sin embargo hay otras aplicaciones que no tienen este argumento.

Con un pequeño shell script (programa del intérprete de comandos) podemos hacer que se cierre el programa que queramos. Lo que tenemos que poner en la tarea sería lo siguiente (respetando las comillas que hay):

kill `ps -A | grep "nombre_del_programa" | cut -c1-5`

Lo que hacemos con este shell script es tomar un listado de los procesos pendientes (ps -A). De todos ellos tomamos el que contenga el nombre del programa (grep «nombre_del_programa») y nos quedamos sólo con su PID o identificador de proceso (cut -c1-5) que es precisamente el argumento que necesita el comando kill para matar/cerrar el programa en cuestión.

Se puede incluso mejorar más. Vamos a crear un shell script en un fichero que cierre un programa cuyo nombre se lo pasamos como argumento. Abramos primero el fichero en /usr/bin que es donde están algunos de los ejecutables para que sea accesible desde cualquier sitio:

$ sudo gedit /usr/bin/matar

Y dentro pegad exactamente esto:

kill `ps -A | grep "$1" | cut -c1-5`

Guardadlo y cerrad gedit. Ahora convirtamos el fichero en ejecutable para cualquiera:

$ sudo chmod 777 /usr/bin/matar

Ahora en la tarea tan sólo tenemos que poner lo siguiente:

bash matar nombre_victima

Donde nombre_victima puede ser xmms, amule, firefox o lo que quieras. Este script también lo podéis usar por consola en lugar de buscar en la lista de ps el PID del proceso que queráis eliminar.

Espero que le saquéis jugo porque tiene mucho 😉

Más «Conocías…» entre tuxes y pepinos

Acciones

Information

31 responses

18 05 2007
DenSer

Buenas, una preguntilla, estoy probando esto e intento hacer cualquier script de unica ejecucion y despues de haberlo creado no puedo ver sus propiedades me sale un error que pone «Por favor seleccione una tarea», es curioso por que si la tarea es de repetición si que puedo editarla despues, pero cuando son de una sola ejecución me sale ese error… se te ocurre porque ocurrirá eso????

18 05 2007
DenSer

Bueno, al menos he comprobado que aunque no me deja editarlos despues de crearlos (he de tener fe en que los creo correctamente y punto, no puede comprobarlos despues de crearlos…. 😀 ) SI que se ejecutan correctamente y funciona el comando que meta en el script…. Pero ahora me toca pegarme a ver por que no puedo apagar el pc por ejemplo (tu ejemplo 3). cuando abro el gnome-scheduler como root sale un mensaje en terminal que pone «no crontab for root» y las tareas que programo no se quedan reflejadas siquiera en la ventana… y estas si que dudo que funcionen… seguiremos investigando…. se aceptan IDEAS!!!! 😛

18 05 2007
CeeC

Hola DenSer

He estado haciendo varias comprobaciones. Es cierto que da un error cuando intentas acceder a las propiedades de una tarea que se ejecutará sólo una vez y no cuando es una repetitiva. Por lo que he comprobado si haces un «crontab -l» en consola, salen sólo las repetitivas, por lo que supongo que puede ser la causa. Es probable que las otras tareas las almacene en otro sitio o en memoria, pero como bien dices, funcionan igualmente.

Respecto a lo de «no crontab for root» cuando abres gnome-schedule como administrador no te preocupes, y si no aparece la tarea en gnome-schedule tampoco. Tú programa que se apague el ordenador en tres minutos que pudas comprobarlo, acepta la tarea y espera a que llegue la hora, se apagará.

Parece que gnome-schedule no está muy pulido aún, pero es 100% operativo. Otra opción es usar crontab directamente mediante consola:

· crontab -l -> Listar tareas
· crontab -e -> Editar tareas (te abrirá el editor por defecto, nano en Ubuntu)
· crontab -r -> Borrar todas las tareas programadas

La sintaxis que hay que introducir para programar una tarea por consola es la siguiente:

minutos horas días_del_mes meses Días_de_la_semana comando_a_ejecutar, icono_para_gnome-schedule

Y s ino te aclaras del todo puedes programar una con gnome-schedule, vas a consola, haces un crontab -e y verás la tarea en el fichero.

Saludos.

18 05 2007
DenSer

Gracias Ceec, ayer al final a las tantas de la mañana consegui hacer las programaciones directamente con crontab desde consola. Lo cierto es que muchas veces (casi siempre cuando te aconstumbras) la consola acaba siendo más rapida que las GUIS. Bueno un detalle curioso, el Crontab me decia el mismo mensaje de root , bajo consola (de tilda para ser exactos) pero lo que me hacia ubuntu el solito, era generarme un archivo contrab para root y acababa funcionando. De hecho apagué el ordenador en un lapso de tiempo muy corto y no me dio tiempo a leer una noticia en la que andaba metido.. :D….

Total que ya ta controlado. Otra cosa nueva que aprendemos!!!! Muchísimas gracias Ceec, lo cierto es que páginas como estas para los novatillos son las mejores que podemos tener en los feeds y aprender cosas nuevas todos los días….

11 06 2007
Cristian

mmm os funciona a todos el gnoms-schedule/crontab? yo no consigo que se lance ninguna tarea, programar si, pero nunca se ejecuta nada. hay que hacer algo mas aparte de instalarlo desde aptitude?

11 06 2007
CeeC

@ DenSer: Siento la demora de la respuesta, se me pasó por alto. Me alegro que te fuera bien.

@ Cristian: No, no hay que hacer nada más. haz un «crontab -e» en consola y pega aquí lo que tienes dentro, a ver si hay algo mal programado porque crontab funciona perfectamente y gnome-schedule es sólo un front-end de éste.

Saludos.

22 08 2007
Russo

Hola a todos:

Estaba intentando hacer un script para que me ejecute el comando:

tv_grab_es | tv_sort > /home/usuario/.tvtime/programaciondiaria

Lo quiero para descargar la programcion de television y que me lo guarde en el archivo programaicondiaria que tengo en .tvtime

La verdad es que he estado haciendo lo que CeeC nos ha explicado a todos con el Configurador de tareas, pero eso nos sirve solo una vez o varias veces cuando el ordenador esta encendido, a una hora determinada,y a mmi me gustaria que el ordenador ejecutara solo ese comando siempre cuando se enciende. Mi proposito es que este cargado la programacion sola sin tener que estar ejecutando el comando, para cuando encienda el tvtime.

Como se puede hacer esto??
Recuerdo a todos que soy muy novato en linux .. XD
Gracias de antemano y un saludo

23 08 2007
CeeC

Hola Russo.

Lo que quieres hacer en el fondo es muy fácil. Crea un archivo de texto dentro de la carpeta «.tvtime» (por ejemplo) y dentro de dicho archivo mete el comando que quieras, en este caso «tv_grab…». Guarda y cierra. Botón derecho sobre él > Propiedades > Permisos y habilita la casilla que hay en la parte inferior para indicar al sistema que es un ejecutable.

Ahora te vas a Sistema > Preferencias > Sesiones > Programas de inicio y creas uno nuevo con el nombre que quieras y en el comando introduces el nombre del fichero que has creado precedido por toda la ruta donde esté.

Hecho esto se te iniciará cuando inicies el sistema. En este caso específico (ya que lo que hace es descargarse info de internet) ten en cuenta que si usas WIFI no funcionará ya que intentará bajar dicha info antes de que introduzcas la clave de la red inalámbrica. Si estás conectado por cable no tendrás problemas, aunque dale unos minutos a que se lo descargue pues tarda uno o un par.

Saludos.

11 09 2007
The Infected Computer

jeejejeje muy bueno por fin encontre una manera de dejar el ordenador encendido mientras descarga algo de noche… ya no tendre que quedarme despierto a esperar 😀 muy bueno se agradece!

20 10 2007
El Rincón del Tio Nuke » Script para administrar los backups de una web

[…] Crea tus tareas programadas cron con gnome-schedule 😉 Enlace permanente | Casificado bajo Destacado , Administración , Seguridad , Desarrollo Web , […]

12 11 2007
piponazo

Buenas! Ceec soy nuevo en esto de los blogs personales y no se muy bien como va aún el asuntillo. La cuestión es que leo mucho tu blog, me parece genial, y me gustaría hacer un enlace a esta entrada en mi blog ya que trato un tema muy parecido y hago referencia al comando cron. Espero a que me des permiso para enlazarte y de paso añadirte a mi blogroll 😉
Un saludo

12 11 2007
CeeC

No hay problema hombre.

Saludos.

22 04 2008
hxc_style

Hay algún programa que sea capaz de encender el ordenador, es decir que por ejemplo yo pueda tener mi ordenador apagado y que automáticamente se encienda y me abra el amarok con musica para despertar-me.

23 04 2008
CeeC

Para encender el ordenador se tiene que hacer mediante BIOS. Si es una placa nueva probablemente tenga la opción. Revisa el manual de tu placa base. En cuanto a lo de Amarok, podrías poner un cron para que se inicie 2 ó 3 minutos después de la hora que le pongas en la BIOS, para darte cierto margen de error por si hace un fsck o algo parecido.

Saludos.

30 04 2008
[DoodoM]

Muy interesante lo del crontab. Por desgracia por ahora no le veo un uso muy definido, puesto que cada vez que quiero hacer algo en mi PC acceso por SSH. Quizás sea útil si a determinadas horas se que alguien está haciendo uso más intensivo de la línea y necesito que el MLdonkey deje de chupar del tarro.

¡Buen post y buenísimo blog el tuyo! ;P

30 04 2008
[DoodoM]

«cada vez que quiero hacer algo en mi PC acceso* por SSH»

Ahí iba a escribir accedo. En fin, últimamente no doy pie con bolo.

25 05 2008
Automatico

Muy buena la guía.
Necesito alguna ayudita que me puedas brindar.
Hace poco comencé con Linux, tengo instalado Ubuntu 7.10 ya la verdad es que no se NADA. Logré hacer funcionar crontab ejecutando algunos scripts como ser guardar la salida de un ls, pero no logro hacer funcionar lo de la música. Ya lo intenté con otros reproductores y otros ejecutables pero nada, no hay forma de que funcione lo de xmms ni ningún programa. ¿Alguna idea de por qué es esto?

Saludos

26 05 2008
CeeC

@ Automatico: Ten en cuenta que al final lo que se usan son comandos, por eso el «xmms -t» por ejemplo. Haz un «man nombre_de_tu_reproductor» y verás los argumentos que tiene el que estés usando. El resto sería seguir lo que comento en la entrada.

Saludos.

8 06 2008
Automatico

Muchas gracias CeeC por tu respuesta. Te cuento un poco lo que tengo a ver si te puedes dar una idea.

Logueandome como root y escribiendo crontab -e tengo esto

# m h dom mon dow command
#Música a cada minuto
* * * * * xmms -t

#Script que guarda la hora a cada minuto
* * * * * /usr/bin/script_tiempo_cada_minuto >>/home/tiempo.tex

El script script_tiempo_cada minuto contiene solamente esto.
#!/bin/sh
date

El archivo tiempo.tex contiene estas entradas.
dom may 25 19:53:01 ART 2008
dom may 25 19:54:01 ART 2008
dom jun 8 11:42:01 ART 2008
dom jun 8 11:43:01 ART 2008
dom jun 8 11:44:01 ART 2008

Pero lo de xmms no hay forma de que funcione, funciona cuando lo invoco directamente desde consola pero crontab no lo levanta ni a este reproductor ni a ningún otro ejecutable que no sea un script.
¿Alguna idea?

25 06 2008
Distintas formas de apagar o reiniciar Ubuntu « Peluchito Jr.

[…] Estos comandos son imprescindibles a la hora de gestionar un ordenador remotamente por SSH para reiniciar o apagar la máquina. También podemos jugar a programar el propio ordenador para que se apague o reinicie cuando queramos sin que hagamos uso de las tareas programadas (crones). […]

28 06 2008
DK

Hola, quiero bajar el archivo ICAL de mi Google Calendar para verlo con el Rainlendar2. He visto en varios blogs que programando un simple WGET usando el Gnome-Schedule lo puedo hacer facilmente. Probé todo en consola y me sale bien lo del wget pero cuando trato de configurar la tarea el Gnome-Schedule me da este error:

» Su comando contiene uno o más caracteres %, este carácter es especial para cron y no se puede usar con el Planificador de GNOME por el formato que usa para almacenar la información adicional en la línea del crontab. Use el carácter de redirección «|» para conseguir la misma funcionalidad. Consulte el manual de crontab para obtener más información sobre el carácter %. Si no quiere usar este carácter para la redirección debe escaparlo con «\». »

La broma es que el Link de la direccion del ICAL tiene un signo % en un sitio. Como puedo hacer para usar esta línea y/o reemplazar ese signo?? para que todo me funcione bien… Muchas gracias!

5 05 2009
Targz » Blog Archive » Curs administració de sistemes GNU/Linux. Sessió 28. 5 de maig de 2009

[…] gnome-schedule (recomendado): Es el editor gráfico de crontab estéticamente más depurado, además e estar completamente traducido al español. Además, nos “traduce” los comandos a u lenguaje más entendible, por lo que requiere menos “soltura” con la edición de crontab. […]

6 05 2009
Marc Vidal

No todo es informática en la vida ¿que hay de las mujeres? ¿puede un geek aprender a seducir mujeres? los mejores artículos sobre seducción, coaching y psicología en:

http://www.aprendeseduccion.com/

25 09 2009
Linuxdom's Blog

[…] Listo..:D facil verdad ahora para su uso mas explicadito les dejo este tutorial mas […]

16 02 2010
reiko

aaaaaaaaaahh!!!
Podría alguien decirme, por favor, como se pone para que sea AM o PM ???
o cómo funciona la cuestión de la hora que al parecer «no comprrrenderrr»???
Gracias!

26 02 2010
nidda gimenez

COMO SE BAJA EL PROGRAMAAA

25 12 2012
Juegos

Good day! I could have sworn I’ve visited this site before but after going through some of the articles I realized it’s new to me.
Anyhow, I’m certainly pleased I discovered it and I’ll be bookmarking it and checking back
frequently!

11 03 2014
Angelillo (@angelillo642)

Desde Linux 12.06 Nemo. Abro el Gnome.schedule como root (Alt+F2) para planificar el apagado automático del sistema a diario y no hay manera de que se apage ni reiniciandoel ordenador. ¿¿ Delante del comando «shutdown -h now» debo dejar lo de «ls»??.
Gracias

26 07 2014
click here

click here

¿Conocías… crontab y gnome-schedule? | Entre tuxes y pepinos

5 06 2015
MOYS

necesito ejecutar una pagina desde cron, escribo el sgte script pero no lo ejecuta:
* * * * * firefox https://www.google.com

Si esta mal mi script diganemlo porfa, porque cuando lo fuerzo se abre el firefox con toda normalidad

21 03 2024
Tutorial: Como programar el apagado automático del ordenador | Arukard's Weblog

[…] El uso de el ordenador o internet puede alterar nuestros habitos de sueño, por lo que este post es para programemos que el apagado automático de el ordenador se ejecute todos los dias a la misma hora (digamos para los dias que tenemos que trabajar o estudiar al dia siguiente).Algunas recomendaciones extra:Pueden hacer varias tareas de apagado, digamos por ejemplo una a las 23:00 otra a las 23:10 otra a las 23:20, etc. para evitar volver a encender el ordenador, ya que si lo encendemos a los minutos se volvera a apagar. Esto nos facilitara el dejar lo que tenemos por hacer para el dia siguiente.Pueden utilizar una herramienta como google keep, un bloc de notas online donde podemos escribir todo lo que tengo pendiente para otro(s) dia(s)).Ademas pueden utilizar una alarma con AlarmClock para que nos recuerde con una cancion o un mensaje de texto 10 minutos antes que el ordenador se apagara en 10 minutos.Puede poner el apagado automatico de Gnome Schedule para los dias Lunes a Jueves, los viernes y sabado pueden no marcarlos y el domingo ponerlo mas temprano, digamos a las 9 o 10 para comenzar la semana con mas energia.Fuentes: http://hablemostux.blogspot.com/2011/09/apagado-automatico-en-linux-sudo.htmlhttp://blog.desdelinux.net/apagar-y-reiniciar-mediante-comandos/http://es.wikipedia.org/wiki/Sue%C3%B1ohttp://www.maketecheasier.com/easy-way-to-schedule-and-automate-tasks-in-ubuntu/2008/06/16http://hatteras.wordpress.com/2010/12/27/programarautomatizar-tareas-no-repetitivas-con-gnome-schedule/http://hatteras.wordpress.com/2010/12/15/programarautomatizar-tareas-repetitivas-con-gnome-schedule/http://ubuntuforums.org/showthread.php?t=2073106https://tuxpepino.wordpress.com/2007/05/16/%C2%BFconocias-crontab-y-gnome-schedule/Y varios comentarios en el post.Este post es una extensión de el tema: Programas para incrementar la productividad en Linux. […]

Deja un comentario