Foros del Web » Administración de Sistemas » Unix / Linux »

ejecutar archivo.sh a las 12 de la noche mediante cron

Estas en el tema de ejecutar archivo.sh a las 12 de la noche mediante cron en el foro de Unix / Linux en Foros del Web. Hola, tengo un archivo yaesta.sh Si lo ejecuto en la consola ./yaesta.sh funciona perfectamente. Pero me surge el mismo problema de siempre, en /etc/crontab escribo: ...
  #1 (permalink)  
Antiguo 05/01/2004, 09:19
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 9 meses
Puntos: 2
ejecutar archivo.sh a las 12 de la noche mediante cron

Hola, tengo un archivo yaesta.sh
Si lo ejecuto en la consola ./yaesta.sh funciona perfectamente.

Pero me surge el mismo problema de siempre, en /etc/crontab

escribo:

01 14 * * * root test -e /bin/bash || run-parts --report /etc/cron.24h/yaesta.sh

no funciona, probe tambien

01 14 * * * /etc/cron.24h/yaesta.sh

Tampoco y siempre el mismo mensaje en el syslog:

/user/sbin/cron[316]: (*system*) RELOAD (/etc/crontab)

A ver si puedo hacerlo funcionar algun dia...
  #2 (permalink)  
Antiguo 05/01/2004, 17:07
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 23 años, 1 mes
Puntos: 6
Re: ejecutar archivo.sh a las 12 de la noche mediante cron

Cita:
01 14 * * * root test -e /bin/bash || run-parts --report /etc/cron.24h/yaesta.sh
no funciona, probe tambien

01 14 * * * /etc/cron.24h/yaesta.sh
hmmmm.. me temo que tus ejemplos no funcionan por que estas haciendo uso del contenido del archivo /etc/crontab sin saber como funciona.

Tu primer ejemplo nunca se ejecuta por la prueba que haces test -e /bin/bash esta prueba devuelve 0 y el operador || espera un valor diferente de cero para que se ejcute la otra parte, en tu caso tu script "ya esta.sh".
El otro ejemplo tampoco funciona por que en el archivo /etc/crontab tienes que especificar el usuario que se hara cargo de ejecutar el proceso.

A hora bien tu ejemplo deviera de lucir algo asi.
Código:
01 00 * * * root test -e /bin/bash && run-parts --report /etc/cron.24h
si te fijas cambie el || por && ya que la prueba devuelve 0 y al final no he puesto el nombre de tu script, Debido a que el comando run-parts ejecuta los scripts que encuentre dentro del directorio cron.24h,de tal forma que no es necesario especificar el nombre del archivo que quieres ejecutar. Los scripts deben de tener permisos de ejecucion y el dueño debe de ser root.

A hora que ya te comente este detalle, te acosejo que leas los manuales de bash y de run-parts para que sepas que es lo que haces.

man bash
man run-parts
man test
Espero disfrutes la lectura.
  #3 (permalink)  
Antiguo 05/01/2004, 19:53
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 9 meses
Puntos: 2
Esta vez si se ha ejecuatado perfectamente, gracias:

el syslog me ha dado este mensaje:

02:28:01 Pasarela /USR/SBIN/CRON[1719]: (root) CMD ( test -e /bin/bash && run-parts --report /etc/cron.24h)

Pero no me ha modificado la base de datos, ya que esa era la funcion del script, poner todo el campo general en valo "2" y no lo ha hecho.

Pero si pogo:

juan@Pasarela:~$ ./echo.sh
juan@Pasarela:~$

Funciona perfectmente, por lo que veo es problema de mi script pero no veo el porque:

mirar asi es el contenido de echo.sh

Pasarela:/etc/cron.24h# cat echo.sh
#!/bin/bash
echo 'UPDATE usuarios SET general = 2;' | mysql -u USER -pPASS marrugino

Un Saludo
  #4 (permalink)  
Antiguo 06/01/2004, 16:12
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 23 años, 1 mes
Puntos: 6
1.- Guarda tu consulta en un archivo
2.- pasa el contenido de tu archivo a mysql
ejemplo:
Código:
mysql -u USER -pPASS tu_base_datos < archivo_con_consulta
En archivo_con_consulta guardas tu consulta sin las comillas simpes que pusiste para el echo.
y todo eso lo pones en tu script que hara la tarea todos los dias a la media noche.
  #5 (permalink)  
Antiguo 14/11/2008, 08:29
 
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Respuesta: ejecutar archivo.sh a las 12 de la noche mediante cron

Hola a todos.soy nuevo y tengo 11 años.me gustaria saber como ejecutar un archivo shell en linux mediante la terminal.pongo el comando ./archivo.sh y no me funciona y el nombre y todo esan bien escritos.Por favor,alguien me puede ayudar¿?
  #6 (permalink)  
Antiguo 14/11/2008, 08:48
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 20 años, 4 meses
Puntos: 76
Respuesta: ejecutar archivo.sh a las 12 de la noche mediante cron

Hola, Sawos.

No deberías preguntarlo en un tema tan viejo, sino abrir un nuevo tema. Pero viendo que eres tan joven y tienes ganas de aprender, te perdonaremos.

Para ejecutar el script, es conveniente que te sitúes en el mismo directorio en el que se encuentra el mismo. Para moverte por la estructura de directorios deberás hacer uso del comando CD. Una vez ubicado en el directorio correcto, deberás ejecutar el comando tal y como ya has hecho, con el punto, la barra y el nombre del archivo.

Si no funciona tal vez se deba a un problema de permisos. Mediante CHMOD puedes atribuirle permisos de ejecución al archivo, y volver a probar.

En cualquier caso, estoy seguro de que cuando intentas ejecutarlo te sale algún mensaje de error. El texto de ese mensaje de error es importante para saber cuál es el problema. Pon aquí el texto del mensaje de error, y podremos diagnosticarlo mejor.

Y por otra parte, es probable que el problema sea que el script está mal escrito. Ponnos el contenido del script para poder echarle un vistazo.

Para la próxima vez, recuerda:

- Preguntas nuevas en temas nuevos. No escribas tu pregunta en otro tema, sobre todo si es un tema viejo.
- Da toda la información que puedas. Sobre todo el texto de los mensajes de error.

Mucha suerte.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:37.