Re: [suse-linux-s] Ejecutar programa con cron
Hola Victor: --- Victor Hugo dos Santos escribió:
Historiadores creen que en la fecha Fri, 6 May 2005 13:43:59 -0500 (CDT)
ninguno de los dos !!!!! el problema esta en el tipo de programa q estas ejecutando .. por ejemplo:
abra alguna consola (CRTL+ALT+F2) entre al sistema y intente abrir el mozilla.. te vas a salir un error, puesto q el mozilla, necesita de una interface grafica para ejecutarse...
o sea, solamente puedes programar tareas (cron y at, ojo, anacron es un complemento para cron) con programas q no necesiten un display!!!!
en todo caso, q quieres hacer exactamente ???? puede q existan otras soluciones !!!
Tu explicación me ha llevado a encontrar el norte, gracias por ello. Buscando, buscando ... al parecer, lo que me sirve es meter mano al archivo /etc/inittab (Pero la verdad, no me atrevo/no sé qué hacer), así que si alguien tiene experiencia con éste archivo/tema que por favor me ayude ... Lo que quiero hacer es "automatizar" lo siguiente: Pulso las teclas Ctrl + Alt + F6 (Para acceder a una Consola Virtual, una vez ingreso al sistema (Nuevamente, pero en modo texto), accedo a un directorio de mi usuario (/home/usuario/descargas), una vez allí, activo un programa con unas opciones (El ejecutable del programa está en /usr/bin, pero puedo activarlo desde /home/usuario/descargas, sin problemas) ... y el programa muestra una pantalla de información (En modo texto). Lo que quiero hacer, es que esta rutina que he descrito, se realice automáticamente (sin intervención del usuario) cuando encienda/reinicie mi computadora ... así las cosas, según el oráculo (http://www.google.com/linux) me enteré que, como la secuencia se ejecuta en una Consola Virtual, puedo "programarla" manipulando el archivo /etc/inittab ... pero ahí si quedé: cerebro > /dev/null :-S. Si alguien me puede colaborar, se lo agradezco. Disculpen las molestias. Quedo atento a sugerencias, recomendaciones, indicaciones. Cordialmente, Cuervo Linuxero EL CAMBIO ES LA CLAVE DE LA EVOLUCION; USA GNU LINUX: LA EVOLUCION DE LA INFORMATICA Y DE TUS CAPACIDADES. _________________________________________________________ Do You Yahoo!? Información de Estados Unidos y América Latina, en Yahoo! Noticias. Visítanos en http://noticias.espanol.yahoo.com
El mar, 10-05-2005 a las 15:49 -0500, Max Draven escribió: Hace años me tocó programr un script que entraba en sesión y recuerdo haberlo hecho con expect, pero de esto hace como 6 ó 7 años. No te puedo dar maś datos por que no lo recuerdo, pero mírate expect, tal vez te pueda servir para programar scripts que requieran cierta interactividad. Saludos
Hola Victor:
--- Victor Hugo dos Santos escribió:
Historiadores creen que en la fecha Fri, 6 May 2005 13:43:59 -0500 (CDT)
ninguno de los dos !!!!! el problema esta en el tipo de programa q estas ejecutando .. por ejemplo:
abra alguna consola (CRTL+ALT+F2) entre al sistema y intente abrir el mozilla.. te vas a salir un error, puesto q el mozilla, necesita de una interface grafica para ejecutarse...
o sea, solamente puedes programar tareas (cron y at, ojo, anacron es un complemento para cron) con programas q no necesiten un display!!!!
en todo caso, q quieres hacer exactamente ???? puede q existan otras soluciones !!!
Tu explicación me ha llevado a encontrar el norte, gracias por ello.
Buscando, buscando ... al parecer, lo que me sirve es meter mano al archivo /etc/inittab (Pero la verdad, no me atrevo/no sé qué hacer), así que si alguien tiene experiencia con éste archivo/tema que por favor me ayude ...
Lo que quiero hacer es "automatizar" lo siguiente:
Pulso las teclas Ctrl + Alt + F6 (Para acceder a una Consola Virtual, una vez ingreso al sistema (Nuevamente, pero en modo texto), accedo a un directorio de mi usuario (/home/usuario/descargas), una vez allí, activo un programa con unas opciones (El ejecutable del programa está en /usr/bin, pero puedo activarlo desde /home/usuario/descargas, sin problemas) ... y el programa muestra una pantalla de información (En modo texto).
Lo que quiero hacer, es que esta rutina que he descrito, se realice automáticamente (sin intervención del usuario) cuando encienda/reinicie mi computadora ... así las cosas, según el oráculo (http://www.google.com/linux) me enteré que, como la secuencia se ejecuta en una Consola Virtual, puedo "programarla" manipulando el archivo /etc/inittab ... pero ahí si quedé: cerebro > /dev/null :-S.
Si alguien me puede colaborar, se lo agradezco.
Disculpen las molestias.
Quedo atento a sugerencias, recomendaciones, indicaciones.
Cordialmente,
Cuervo Linuxero
EL CAMBIO ES LA CLAVE DE LA EVOLUCION; USA GNU LINUX: LA EVOLUCION DE LA INFORMATICA Y DE TUS CAPACIDADES.
_________________________________________________________ Do You Yahoo!? Información de Estados Unidos y América Latina, en Yahoo! Noticias. Visítanos en http://noticias.espanol.yahoo.com
El 2005-05-10 a las 15:49 -0500, Max Draven escribió:
Buscando, buscando ... al parecer, lo que me sirve es meter mano al archivo /etc/inittab (Pero la verdad, no me atrevo/no sé qué hacer), así que si alguien tiene experiencia con éste archivo/tema que por favor me ayude ...
Ummm! Yo no tocaría ese fichero tan alegremente.
Lo que quiero hacer es "automatizar" lo siguiente:
Pulso las teclas Ctrl + Alt + F6 (Para acceder a una Consola Virtual, una vez ingreso al sistema (Nuevamente, pero en modo texto), accedo a un directorio de mi usuario (/home/usuario/descargas), una vez allí, activo un programa con unas opciones (El ejecutable del programa está en /usr/bin, pero puedo activarlo desde /home/usuario/descargas, sin problemas) ... y el programa muestra una pantalla de información (En modo texto).
Y, ¿tan necesario es usar ese programa, que no tienes una alternativa con otro programa que trabaje sin intervención humana, que no necesite una pantalla? Es que no cuentas lo que hace... -- Saludos Carlos Robinson
No acabo de entender muy bien cual es el problema.
Posibilidades tienes muchas, puedes crear un script (xx.sh) en /etc/init.d
con un link
simbolico en /etc/init.d/rc3.d/S50xx.sh y /etc/init.d/rc3.d/K50xx.sh que
ejecute
todo lo que quieras. Redirecciona la salida con > /dev/ttyX siendo X la
terminal donde
quieras redireccionarlo. Eso si.. antes edita /etc/inittab y quita la linea
del getty que hace
referencia a esa terminal (Lo ideal es usar nº terminales altas que no estan
en uso 8,9 ... pero
como tu quieres hacerlo en la 6...).
Si lo que quieres es usar el inittab para ejecutarlo pues haz lo mismo,
comenta la linea
del getty, creas algun script (xx.sh) que ejecute ya todo con todos los
parametros que necesitas y puedes poner algo asi:
au:3:wait:/ruta/xx.sh > /dev/ttyX
siendo X el num de terminal
Puedes jugar con la redireccion de errores si tambien quieres que se
impriman errores con 2>
----- Original Message -----
From: "Carlos E. R."
El 2005-05-10 a las 15:49 -0500, Max Draven escribió:
Buscando, buscando ... al parecer, lo que me sirve es meter mano al archivo /etc/inittab (Pero la verdad, no me atrevo/no sé qué hacer), así que si alguien tiene experiencia con éste archivo/tema que por favor me ayude ...
Ummm! Yo no tocaría ese fichero tan alegremente.
Lo que quiero hacer es "automatizar" lo siguiente:
Pulso las teclas Ctrl + Alt + F6 (Para acceder a una Consola Virtual, una vez ingreso al sistema (Nuevamente, pero en modo texto), accedo a un directorio de mi usuario (/home/usuario/descargas), una vez allí, activo un programa con unas opciones (El ejecutable del programa está en /usr/bin, pero puedo activarlo desde /home/usuario/descargas, sin problemas) ... y el programa muestra una pantalla de información (En modo texto).
Y, ¿tan necesario es usar ese programa, que no tienes una alternativa con otro programa que trabaje sin intervención humana, que no necesite una pantalla? Es que no cuentas lo que hace...
-- Saludos Carlos Robinson
--------------------------------------------------------------------------------
-- Para dar de baja la suscripcisn, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
El 2005-05-11 a las 13:06 +0200, aux escribió:
No acabo de entender muy bien cual es el problema.
Ni yo.
Posibilidades tienes muchas, puedes crear un script (xx.sh) en /etc/init.d con un link simbolico en /etc/init.d/rc3.d/S50xx.sh y /etc/init.d/rc3.d/K50xx.sh que ejecute todo lo que quieras. Redirecciona la salida con > /dev/ttyX siendo X la terminal donde quieras redireccionarlo. Eso si.. antes edita /etc/inittab y quita la linea del getty que hace referencia a esa terminal (Lo ideal es usar nº terminales altas que no estan en uso 8,9 ... pero como tu quieres hacerlo en la 6...).
Lo que pasa es que no será interactivo, es unicamente salida. -- Saludos Carlos Robinson
Hola Carlos: --- "Carlos E. R." escribió:
Y, ¿tan necesario es usar ese programa, que no tienes una alternativa con otro programa que trabaje sin intervención humana, que no necesite una pantalla? Es que no cuentas lo que hace...
Lo de la intervención humana, no la necesita el programa, hasta donde he visto (Ya que no me pide ningún ingreso de datos, todos los parámetros están dados por las opciones). Lo de la pantalla, a juzgar con lo que pasó con el cron, sí creo que la necesite/use. El programa está estructurado de la siguiente manera (Hasta donde llegan mis conocimientos, yo no lo hice): su ejecutable está en /usr/bin ... pero los datos que el programa descarga a mi computadora, los puedo almacenar en el directorio que yo le indique (Escogí /home/usuario/descargas). Si lo ejecuto desde el directorio /home/usuario (Y no desde /home/usuario/descargas), me guardará los datos que descarga, en /home/usuario e igual si lo lanzo desde otro directorio (Esto lo soluciono creando un enlace simbólico de /home/usuario/ a /home/usuario/descargas). La pantalla muestra datos como interrupciones en la descarga de datos, tasas de transferencia y cosas así ... datos de monitoreo, en resumen. Y no creo que eso (La muestra de datos en pantalla) se pueda obviar (Al menos no sé como), aunque cuando ejecuto el programa de la siguiente manera: $ nombre_programa -opciones & Miro en los procesos activos (ps -e) y veo que el nombre del programa está allí (Ejecutándose supongo). Espero que ésto pueda dar más luces sobre lo que quiero hacer. Nuevamente, gracias a tod@s por la colaboración, paciencia e indicaciones. Estaré pendiente a cualquier otra sugerencia, indicación, comentario. Cordialmente, Cuervo Linuxero EL CAMBIO ES LA CLAVE DE LA EVOLUCION; USA GNU LINUX: LA EVOLUCION DE LA INFORMATICA Y DE TUS CAPACIDADES. _________________________________________________________ Do You Yahoo!? Información de Estados Unidos y América Latina, en Yahoo! Noticias. Visítanos en http://noticias.espanol.yahoo.com
El 2005-05-11 a las 11:01 -0500, Max Draven escribió:
$ nombre_programa -opciones &
Prueba con: programa 2> /dev/tty9 > /dev/tty9 El único problema es que el terminal pertenece a root, y no se si tu programa secreto lo ejecuta root o un usuario. Y, no creo que puedas escribir, o sea, que funcione el teclado. Otra manera es volcar a un fichero. O a un named pipe, incluso... quizás... eso no lo tengo claro. -- Saludos Carlos Robinson
Hola Carlos: --- "Carlos E. R." escribió:
Prueba con:
programa 2> /dev/tty9 > /dev/tty9
Ensayé ésto (Como usuario activo en el sistema) y funcionó perfectamente (El programa se ve en ejecución normal y completa en la terminal virtual 9)
El único problema es que el terminal pertenece a root, y no se si tu programa secreto lo ejecuta root o un usuario.
El programa lo puedo ejecutar como usuario.
Y, no creo que puedas escribir, o sea, que funcione el teclado. Otra manera es volcar a un fichero. O a un named pipe, incluso... quizás... eso no lo tengo claro.
La verdad, no necesito escribir nada, sólo ejecutar el programa con las opciones correspondientes ... el resto va por su cuenta. Volviendo al principio (E insistiendo con el cron), coloqué lo siguiente en el crontab: /home/usuario/descargas/programa -opciones 2> /dev/tty9 > /dev/tty9 Y al mirar la terminal virtual 9, me aparece lo siguiente: Error opening terminal: unknown. De nuevo, ni sé qué significa ni sé qué debo hacer. Indagando, indagando, he encontrado un definición que dice:"El archivo /home/usuario/.bash_profile establece el entorno y ejecuta sus programas". Estos programas a que hace referencia, son los del entorno o puede usarse como un archivo por lotes también ? He leído que se podría igualmente hacer lo que quiero, cambiando algo en el /etc/inittab; pero no tengo ni la más mínima idea de cómo hacerlo/qué escribir. :-S Gracias por tu paciencia, interés y colaboración. Quedo pendiente de cualquier otra sugerencia/indicación. Cordialmente, Cuervo Linuxero EL CAMBIO ES LA CLAVE DE LA EVOLUCION; USA GNU LINUX: LA EVOLUCION DE LA INFORMATICA Y DE TUS CAPACIDADES. _________________________________________________________ Do You Yahoo!? Información de Estados Unidos y América Latina, en Yahoo! Noticias. Visítanos en http://noticias.espanol.yahoo.com
Max Draven escribió:
Hola Carlos:
--- "Carlos E. R." escribió:
Prueba con:
programa 2> /dev/tty9 > /dev/tty9
Ensayé ésto (Como usuario activo en el sistema) y funcionó perfectamente (El programa se ve en ejecución normal y completa en la terminal virtual 9)
El único problema es que el terminal pertenece a root, y no se si tu programa secreto lo ejecuta root o un usuario.
El programa lo puedo ejecutar como usuario.
Y, no creo que puedas escribir, o sea, que funcione el teclado. Otra manera es volcar a un fichero. O a un named pipe, incluso... quizás... eso no lo tengo claro.
La verdad, no necesito escribir nada, sólo ejecutar el programa con las opciones correspondientes ... el resto va por su cuenta.
Lo que debes hacer es lo siguiente: 1.- Crea un script que ejecute tu programa y lo pruebas desde tu terminal en forma normal. 2.- Ese script debe contener al menos lo siguiente: #!/bin/bash export TERM=linux ejecucion_programa Puedes reemplazar linux por el tipo de terminal que estes utilizando, a cron le bastara con que la variable TERM tenga un valor definido que sea correcto 3.- Suponiendo que tu script se llama progcron.sh por ejemplo, debes dejarlo con permisos de ejecucion, sugiero 755 (rwxr-xr-x) y lo ejecutas interactivamente solo para probarlo. Si comienza a desplegar texto por la pantalla, se debe a una o ambas de las siguientes razones: - Tu programa emite despliegues de data por la pantalla a traves de la salida standard - Tienes mensajes de error en la ejecucion, los cuales salen por la salida de errores 4.- Si tienes salida, ya sea standard y/o de errores, entonces debes considerar eso para ejecutar en el cron tu aplicacion. 5.- Programa en el cron, la ejecucion _del_script_, el cual tu previamente habras dotado de las variables de ambiente que necesita (como TERM por ejemplo) Si hay que considerar salida, solamente la rediriges como te sea mas util, ejemplos: 30 5 * * * /directorio_path/progcron.sh 2>&1 > /dev/null #Perderas lo que salga 30 5 * * * /directorio_path/progcron.sh 2>&1 > archivo.testigo.txt #Grabaras la salida en archivo.testigo.txt Si tu problema actual fuese solamente que te esta reclamando por no haber definido alguna variable de ambiente, basta con que lo hagas en el archivo de cron, en la forma: TERM=linux MAILTO=tu_cuenta_de_email OTRAVARIABLE=contenido_de_otra_variable Luego puedes ejecutar directamente tu programa, considerando lo ya mencionado respecto a redireccionar la(s) salida(s) Saludos LRP
participants (5)
-
Alex Casteleiro
-
aux
-
Carlos E. R.
-
Luis Roa P.
-
Max Draven