Hola Luis: --- "Luis Roa P." escribió:
Lo que debes hacer es lo siguiente:
1.- Crea un script que ejecute tu programa y lo pruebas desde tu terminal en forma normal.
Lo llamé rutina.sh
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
Quedó así: #!/bin/bash export TERM=linux cd /home/usuario/descargas /usr/bin/programa -opciones 2> /dev/tty8 > /dev/tty8. Lo del valor de TERM, no lo cambié, pues no estoy claro a lo que se refiere.
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
El programa se ejecuta perfectamente en la consola virtual 8. Hay salida en pantalla pero bueno, eso es parte del programa en sí. Así que creo que eso significa: Cero errores.
4.- Si tienes salida, ya sea standard y/o de errores, entonces debes considerar eso para ejecutar en el cron tu aplicacion.
Supongo que te referías a corregir errores, si llegaran a presentarse; pasé de ésto.
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
Quedó de la siguiente manera: 0 * * * * /home/usuario/rutina.sh
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)
De ésta parte no hice uso de nada (Creo que ya todo estaba definido en la rutina expuesta párrafos arriba) Lo coloqué a ejecutarse cada hora, para que en caso de que la máquina se apague/sea reiniciada, el programa vuelva a ejecutarse sin necesidad de intervención humana. Una pregunta final (Ya que casi todo está resuelto): cómo podría hacer que en lugar de ejecutarse cada hora (Como lo coloqué actualmente), se ejecutara cada vez que la máquina se encendiera/reiniciara ?. Muchas gracias a Luis Roa, Carlos Robin, Víctor (No recuerdo su apellido, en éste instante) y otr@s colister@s que me tuvieron paciencia, sacaron parte de su tiempo y actividades para colaborarme y darme indicaciones muy útiles y explicadas de manera sencilla/práctica. Presento mis disculpas, si he olvidado mencionar a alguien que me hubiera colaborado en alguna ocasión/de alguna forma, para llevar a cabo éste ensayo. Lamento mucho que haya desadaptados, que no entienden con qué fin está constituída ésta lista de correo electrónico y que por otra parte, no tengan el menor respeto por el buen uso del idioma, la dignidad y las diferencias (De nacionalidad y puntos de vista) de las personas que, de una u otra forma participamos en ésta lista de correo electrónico. Disculpen las molestias. 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