PDA

Ver la versión completa : [Ayuda] Con Crontab en Ubuntu server



Juk
02/12/2010, 09:45
Es la primera vez que uso contab. He editado con sudo el archivo y he añadido lo siguiente y no se ejecuta:

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
0/5 * * * * usuario /home/usuario/minecraft/minecraft start
2/5 * * * * usuario /home/usuario/minecraft/minecraft backup
1 4 * * * * usuario /home/usuario/minecraft/minecraft cartography
11 4 * * * 1 usuario /home/usuario/minecraft/minecraft backup clean
1 5 * * * * usuario /home/usuario/minecraft/minecraft restart
1 17 * * * * usuario /home/usuario/minecraft/minecraft restart

minecraft es un .sh al que le he quitado la extensión.

Alguna ayudita?

otto_xd
02/12/2010, 10:11
sin entrar en ver si esta bien o mal.

Tienes el usuario que lanza crontab privilegios para lanzar minecrat??

minecraft tiene permisos de ejecucion??

Juk
02/12/2010, 10:16
El usuario que lanza crontab es un usuario de sistema normal.... que grupo es el que puede ejecutar crontab? porque no le he añadido ni nada :S

lo segundo está bien porque lo estoy ejecutando manualmente y funciona.

Un saludo!

otto_xd
02/12/2010, 10:34
El usuario que lanza crontab es un usuario de sistema normal.... que grupo es el que puede ejecutar crontab? porque no le he añadido ni nada :S

lo segundo está bien porque lo estoy ejecutando manualmente y funciona.

Un saludo!

En principio con ps -ax deberias de ver si esta crontab ejecutandose.

El tema esta que el usuario que lanza crontab tenga privilegios para lanzar esos script.

De todas formas hace mucho que no me pego con eso, asi que ahora entrara algun guru y me dejara mal :lol:

juanvvc
02/12/2010, 13:30
Los 0/5 y 2/5 no sé bien qué significan, y es posible que cron tampoco y se líe con ellos. Recuerda también la que la última línea del archivo tiene que estar en blanco.

¿Cómo sabes que no se ejecutan? ¿Estás en pie a las 4 de la mañana comprobándolo? :D

Cada vez que cambies crontab, recuerda reiniciar cron para que vuelva a leer el archivo de configuración. No recuerdo si era necesario, pero por si acaso. Al reiniciar comprueba los logs a ver si cron se queja de alguna mala configuración.

Juk
02/12/2010, 18:08
Los 0/5 y 2/5 no sé bien qué significan, y es posible que cron tampoco y se líe con ellos. Recuerda también la que la última línea del archivo tiene que estar en blanco.

¿Cómo sabes que no se ejecutan? ¿Estás en pie a las 4 de la mañana comprobándolo? :D

Cada vez que cambies crontab, recuerda reiniciar cron para que vuelva a leer el archivo de configuración. No recuerdo si era necesario, pero por si acaso. Al reiniciar comprueba los logs a ver si cron se queja de alguna mala configuración.

vamos por partes... No he reiniciado, pero sabiéndolo, ahora lo hago. Lo de estar despierto a las 4 de la mañana... si se ejecuta, debe crear un archivo en una ruta, si no esta es que no se ha ejecutado :p

Y lo de la linea en blanco, no tenia ni dea :p

< - >
Creo que ya he encontrado el problema.... Desde el tercer script mio al ultimo, sobra un asterisco en todas las lineas :p a ver si ahora funciona.

Mo1
02/12/2010, 18:22
in Juk we trust! Animo! Ya te digo que al menos los mensajes de advertencia se muestran!

Juk
02/12/2010, 18:50
in Juk we trust! Animo! Ya te digo que al menos los mensajes de advertencia se muestran!

Si, pero eso son backups manuales que hago yo.

no soy capaz :(

dardo
02/12/2010, 18:55
Eres un cavernícola, el crontab de toda la vida se ha editado con el comando crontab -e que lanza un editor (seleccionable con la variable de entorno EDITOR) que te permite editar el fichero, ya que si no ningún usuario podría editar su crontab al estar guardado en /var/spool/crontab/.

Al guardar el fichero el editor le devuelve el fichero al comando crontab y de paso te informa si hay algún error de sintaxis, como por ejemplo el asteriso de sobra.

PD: Cron lee el crontatab una vez por minuto, por lo que sólo hay que reiniciarlo si alguna tarea no entra, o en el log muestra mensajes de que se ha alcanzado el máximo de tareas en espera o semejante.

En teoría con matarlo es suficiente porque init lo levanta. En ubuntu especificamente no estoy seguro, porque me da pereza encender el PC, pero no debería ser distinto.

Edito, es la primera vez que veo que se puede especificar el usuario en un crontab.

El usuario no se especifica, cada usuario puede usar cron si está listado en /etc/cron.allow y no existe el fichero /etc/cron.deny (instalación por defecto de Ubuntu, todos los usuarios pueden usar cron). Cada usuario tiene un crontab separado y el programa crontab tiene permisos de setUID para poder editarlos.

A menos que hayas editado el fichero /etc/crontab, que no es la planificación del crond, sino de otros planificadores como anacron, que se apoya en crontab y que se usa para planificar cosas que se tienen que hacer aunque el sistema esté apagado,aunque sin importar cuando (por ejemplo, cuando el sistema ya no esté apagado).

Juk
02/12/2010, 19:23
dardo, lo he hecho editando crontab a lo bestia y con crontab -e

Se supone que tras añadir esto a crontab -e debería funcionar... pero no lo hace :S


0/5 * * * * /home/david/minecraft/minecraft start
2/5 * * * * /home/david/minecraft/minecraft backup
1 4 * * * /home/david/minecraft/minecraft cartography
11 4 * * 1 /home/david/minecraft/minecraft backup clean
1 5 * * * /home/david/minecraft/minecraft restart
1 17 * * * /home/david/minecraft/minecraft restart


Ya no se que mas hacer.... no se si poniendole el .sh correspondiente a la ruta funcionará (tengo duplicado el script por si acaso, uno con .sh y otro sin ello, dentro del directorio minecraft)

Un saludo.

Sr.Polilla
02/12/2010, 19:25
pregunta tonta, ¿tienes permisos de ejecución en cada script?

Juk
02/12/2010, 19:28
pregunta tonta, ¿tienes permisos de ejecución en cada script?

Si, sino supongo que no me dejaría ejecutarlo de forma manual. Supongo que tampoco me arriesgaría 5€ a ello, jajaja

dardo
02/12/2010, 19:31
dardo, lo he hecho editando crontab a lo bestia y con crontab -e

Se supone que tras añadir esto a crontab -e debería funcionar... pero no lo hace :S


0/5 * * * * /home/david/minecraft/minecraft start
2/5 * * * * /home/david/minecraft/minecraft backup
1 4 * * * /home/david/minecraft/minecraft cartography
11 4 * * 1 /home/david/minecraft/minecraft backup clean
1 5 * * * /home/david/minecraft/minecraft restart
1 17 * * * /home/david/minecraft/minecraft restart


Ya no se que mas hacer.... no se si poniendole el .sh correspondiente a la ruta funcionará (tengo duplicado el script por si acaso, uno con .sh y otro sin ello, dentro del directorio minecraft)

Un saludo.

Creo que los logs de cron en ubuntu van al syslog. Echale un ojo. Por cierto, al no estar redirigida la salida a ninguna parte la salida va al mail del usuario.

juanvvc
02/12/2010, 19:37
Perdona que insista, pero ¿cómo sabes que no lo hace? Quiero decir, a lo mejor lo intenta a su hora y salta algún error.

¿Qué significa el 0/5 y 2/5? No los encuentro en la documentación.

Juk
02/12/2010, 19:39
te dice algo esto?

Dec 2 20:02:01 tirith CRON[1277]: (david) CMD (/home/david/minecraft/minecraft backup)
Dec 2 20:02:02 tirith CRON[1276]: (CRON) info (No MTA installed, discarding output)

< - >

Perdona que insista, pero ¿cómo sabes que no lo hace? Quiero decir, a lo mejor lo intenta a su hora y salta algún error.

¿Qué significa el 0/5 y 2/5? No los encuentro en la documentación.

0/5 Cada 5 minutos empezando por el minuto 0

2/5 Cada 5 minutos empezando por el minuto 2

juanvvc
02/12/2010, 19:41
Está intentando ejecutar, pero como no tienes configurado el sistema de emails no te puede informar de qué pasa o qué no pasa :)

0/5 y 2/5 NO significan cada cinco minutos empezando en 0 y 2, al menos en la documentación que he leído. Si se interpretan así es algo no documentado en la página de manual. Por lo que sé, se deberían escribir 0-55/5 y 2-58/2 respectivamente.

Añade al final "2&>1 >/home/usuario/salida.txt" a los comandos, a ver si sacas algo en claro: comando ejecutándose o algún error

Juk
02/12/2010, 19:48
Añade al final "2&>1 >/home/usuario/salida.txt" a los comandos, a ver si sacas algo en claro: comando ejecutándose o algún error

Amos a probar, gracias

< - >
Por cierto, el tema de 5/5 y tal lo he sacado de aqui :p http://www.linuxtotal.com.mx/index.php?cont=info_admon_006

juanvvc
02/12/2010, 19:51
Si a lo mejor funciona, pero no veo en la documentación de cron que se escriba así :)

Duda tonta: ¿no puede ser que te esté saltando el "haz ahora un backup" sin que haya saltado "minecraft start" antes y por eso falle? No sé si necesitas tener corriendo el servidor para hacer un backup, lo digo solo por dar idea.s

Juk
02/12/2010, 19:56
Si a lo mejor funciona, pero no veo en la documentación de cron que se escriba así :)

Duda tonta: ¿no puede ser que te esté saltando el "haz ahora un backup" sin que haya saltado "minecraft start" antes y por eso falle? No sé si necesitas tener corriendo el servidor para hacer un backup, lo digo solo por dar idea.s

El servidor esta corriendo de todas porque lo ejecuto yo a mano. Una vez se ejecutado, si se inicia el script, comprueba si esta en marcha el servidor, si es asi te avisa que está en marcha y sino lo inicia. De todas todas, el script minecraft funciona sin problemas porque manualmente (sin sudo ni historias raras) funciona que te cagas las bragas :p

Aiken
02/12/2010, 21:46
si se ejecuta, debe crear un archivo en una ruta, si no esta es que no se ha ejecutado :p

en que ruta segun tu?
crontab usa como pwd el home del usuario (creo), no te lo va a dejar en la ruta del programa.

Aiken

Juk
02/12/2010, 22:20
Pero yo le estoy indicando una ruta absoluta, ¿no? al menos en el crontab la ruta que he puesto es absoluta. Si la debo poner relativa ahi ya tendria que hacer mas pruebas.

xzakox
02/12/2010, 22:33
Si es el /etc/crontab, suele ser algo asi:



SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
42 6 * * * root run-parts --report /etc/cron.daily

Donde "m" es minuto, "h" es hora, "dom" es dia del mes, "mon" es mes, y "dow" es dia de la semana, luego el usuario como el que ejecutar el comando, y luego comando y parametros.
Lo único que veo que te falte es el usuario... puedes probar a meterlo.

BeatTakeshi
02/12/2010, 23:15
Yo hablo me mi expeciencia, no lo hagas con contrab -e, vete a /etc/cron.d/ y crea un archivo que se llame minecraft, pega lo mismo que has pegando en el crontab -e en referencia a eso y dale permisos de ejecución.
A mi asi me funciona :)

Juk
03/12/2010, 01:22
Yo hablo me mi expeciencia, no lo hagas con contrab -e, vete a /etc/cron.d/ y crea un archivo que se llame minecraft, pega lo mismo que has pegando en el crontab -e en referencia a eso y dale permisos de ejecución.
A mi asi me funciona :)

indicando usuario o sin indicarlo?



xzakox, con crontab -e no hace falta especificar usuario ya que se realiza con el usuario activo.

< - >
Acabo de conseguir que funcione con crontab -e
Algo había mal y en vez de cada 5 minutos, solo se ejecutaba cada hora (alguien me va a dar una patada en el culo, pero lei que estaba bien, lo siento)

Muchas gracias a todos, de verdad :)

The_Punisher
03/12/2010, 12:54
Muchas gracias a todos y a juk, por hacer de este server de minecraft una delicia, por cierto, da la vara ver cada 4:50 minutos que en 10 segundos se va a hacer un backup xD

Juk
03/12/2010, 12:59
Muchas gracias a todos y a juk, por hacer de este server de minecraft una delicia, por cierto, da la vara ver cada 4:50 minutos que en 10 segundos se va a hacer un backup xD

Seguramente lo ponga cada hora, de momento ajo y agua, luego lo cambio.