Creacion de tarea programada para servicio httpd en Oracle Enterprise Linux

Iniciado por aldosn, 7 Octubre 2010, 19:13 PM

0 Miembros y 1 Visitante están viendo este tema.

aldosn

Hola gente: :D

Este post es para preguntarles una cosa:
-Deseo crear una tarea programada en Oracle Enterprise Linux, la cual en un determinado hora me levante el servicio de Apache y a otra determinada hora se baje.

Se que suena faxil asi que lo intente pero no funciona, diganme en donde esta mal. :silbar:

Paso1.
--------
Abro un terminal y digito lo siguiente:
cd /etc
gedit crontab


Paso2.
--------
Agrego lo siguiente:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
22 10 * * * exec /scripts/start_apache.sh



Donde lo pintado de negrita vendria ser mi bash de levantar el servicio y que se haga todos los dias a las 10:22.

Paso3.
--------
Luego creo mi bash cuyo contenido es el siguiente:
service httpd start

Paso4.
--------
Una vez hecho eso, espero a la hora indicada pero el status de httpd sigue parado.
:o no levanta.

Algo estoy haciendo mal???? Me falta reiniciar el equipo, me falta dar permisos,el bash debe tener mas cosas, etc.....Ayudenme porfa!!!! :)

Saludos

rastanthology

#1
Por empezar esto va a en scripting, probablemente te lo muevan

Despues no entiendo esto:

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
22 10 * * * exec /scripts/start_apache.sh

Luego un script se lee una vez y si no se le indica nada cuando se termina de leer se cierra

Segundo no se donde habras leido que indicando la hora asi bash responde haciendo algo a esa hora :P

Tercero estas seguro de que la forma en la que se arranca el apache en tu distro es esa y no algo como : /etc/init.d/apache start ?



Sacando eso de lado te doy una idea minima de como seria:

Código (bash) [Seleccionar]

#!/bin/bash

function hora() {
date=`date +%H:%M`
}
loop="false"

while [ loop="false" ]
do
hora
if [ date="22:10" ]
then
exec /.../scripts/start_apache.sh
echo $date
echo "Arranco el servidor apache"
sleep 60 #Asi no le pedis que arranque mil veces en ese minuto
#elif [ date=... ]
#then
#...
fi

done



Yo en vez de ejecutar desde otro sh lo haria directamente del mismo, como no conozco tu ditro no toy seguro de donde esta localizado, pero casi seguro que en algun lado podes hacer /apache start y /apache stop; el while es para que el script este corriendo siempre

Espero que te sirva, cualquier cosa pregunta


Saludos




Foxy Rider

#2
@rastanthology : La duda en sí no es de scripting ( es sobre cron ), así que corresponde a este foro ... además, el script que planteás hace más o menos lo que ya hace el cron ^^

@aldosn :  te falta el usuario a la entrada del cron ... el formato es :
Código (bash) [Seleccionar]
#minute hour    mday    month   wday    who     command

Igualmente, cualquier problema con el cron lo consultás en /var/log/cron (usualmente el log está ahí)

Saludos.

rastanthology

ah jaja, no sabia nada del cron, no se por que pense que lo queria hacer con bash :P

aldosn

Estimados: vertex@Symphony & rastanthology  ;-)

Muchas gracias por el apoyo, en realidad de ambos sirvio un monton ;D, para mejorar mi bash y para mejorar mi configuracion de crond.

Les dejo la solución que me sirvio:


  • start_apache.sh

#! /bin/bash
service httpd start
sleep 60
done



  • Archivo de configuracion crontab(Para programar la tarea)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
22 10 * * * root exec /scripts/start_apache.sh


Cabe señalar que la hora en que se ejecutará la tarea es 10:22 no las 22:10, vertex@Symphony explica bien es su post el formato. :laugh:

Gracias señores!!!! ;-)


Consulta adicional:
---------------------
1. ¿Se podra crear un vinculo desde windows XP, que al hacer doble clic ejecute el bachero y se levante el apache?
2. ¿Que pasa si quiero adenlantar o atrazar la hora de la tarea,tendria q entrar al crontab o existe alguna forma grafica de decir que ya no se ejecuta la tarea o que se hace mas tarde?

Gracias otra vez, y espero respondan a mis inquietudes.




Foxy Rider

1) No entendí ^^"
2) Sipi, editando el crontab cuando quieras cambiando a la hora que gustes ... después el cron pasado un minuto relee el archivo ...

Saludos.

aldosn

Cita de: vertex@Symphony en  8 Octubre 2010, 00:25 AM
1) No entendí ^^"
2) Sipi, editando el crontab cuando quieras cambiando a la hora que gustes ... después el cron pasado un minuto relee el archivo ...

Saludos.

@vertex@Symphony:

Jajajajaja

Me referia que si por ejemplo: Se podrá tener un acceso directo en el escritorio de mi PC con windows XP, el cual cuando hago doble clic, se levante el servicio de Apache que se encuentra en un servidor(otra PC). Estaba pensando en utilizar samba para poder primero compartir la carpeta donde se encuentra el bachero............ pero bueno, probare en una makina virtual.

Gracias.

rastanthology

mmmm no lo veo muy factible asi como lo planteas, pero un camino mas simple es poner un servidor ssh en la maquina con linux y te conectas desde windows a un terminal remoto y ejecutas lo que quieras desde ahi

en cuanto a modificar el crontab, si es algo que harias regularmente y de forma sistematica, podrias hacer un script que cuando lo corras de acuerdo a ciertas variables lo modifique de ciertas formas