ImHarvol
Posts: 50
Joined: Sun Dec 11, 2016 9:19 pm
Location: Alicante, España/Spain
Contact: Website

No consigo que funcione crontab

Sat May 27, 2017 5:52 pm

Buenas, llevo ya unas semanas teniendo problemas con el crontab:

Tengo 3 scripts en Python, que se tienen que abrir (y mantener abiertas) en segundo plano cuando la raspberry pi se encienda, el problema es que no lo consigo. Al principio queria abrir directamente el script Python desde crontab, pero no lo conseguia, asi que ahora mismo, tengo este simple archivo run.sh:

Code: Select all

#!/bin/bash

python /home/user/apis/carpeta/1 &

python /home/user/apis/carpeta/2 &

python /home/user/apis/carpeta/3 &
Y en el crontab tengo la siguiente linea:

Code: Select all

@reboot "/home/imharvol/apis/hellcase/.run.sh &"
Y he probado otras cosas, como ponerlo sin comillas, pero nada, reiniciaba la raspberry pi, y no se estaban ejecutando
Malditos DNS

screspo
Posts: 92
Joined: Tue Dec 08, 2015 9:59 am
Location: El Albir - Alicante
Contact: Website

Re: No consigo que funcione crontab

Sun May 28, 2017 8:34 am

Prueba con esta sintaxis:

(te pongo un ejemplo de script python y otro de shell)

@reboot sh /root/led.sh &

@reboot python sh /root/test-adsl.py &

y ya nos dices, salu2,
Santi
http://alteageek.com

ImHarvol
Posts: 50
Joined: Sun Dec 11, 2016 9:19 pm
Location: Alicante, España/Spain
Contact: Website

Re: No consigo que funcione crontab

Sun May 28, 2017 8:52 am

screspo wrote:Prueba con esta sintaxis:

(te pongo un ejemplo de script python y otro de shell)

@reboot sh /root/led.sh &

@reboot python sh /root/test-adsl.py &

y ya nos dices, salu2,
He puesto exactamente esto (la ruta esta bien):

Code: Select all

@reboot sh /home/imharvol/apis/hellcase/.run.sh &
Pero sigue sin funcionar.
El script se trata de un StreamListener de Tweepy, y lo que debería hacer es, responder a los tweets que mando. Con el crontab no he conseguido que funcione, en cambio, en la consola pongo /home/imharvol/apis/hellcase/.run.sh y se empieza a ejecutar correctamente en segundo plano.
¿Se te ocurre algo mas? Gracias de todos modos ^^
Malditos DNS

raspdroid
Posts: 1606
Joined: Thu Nov 06, 2014 9:15 am
Location: Gran Canaria :: España

Re: No consigo que funcione crontab

Sun May 28, 2017 11:26 am

¿Qué hace el amperson en el script bash? Has probado así?

Code: Select all

#!/bin/bash

python /home/user/apis/carpeta/1 

python /home/user/apis/carpeta/2 

python /home/user/apis/carpeta/3 

Code: Select all

@reboot python /home/pi/myscript.py &
o con sudo

Code: Select all

@reboot sudo python /home/pi/myscript.py &

User avatar
lmarmisa
Posts: 1264
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: No consigo que funcione crontab

Tue May 30, 2017 12:29 pm

La utilidad crontab funciona bien. Así que el problema estará en algún detalle.

Supongo que los scripts python que deseas lanzar no precisan de entorno gráfico. Cuando arrancas un programa con CRON, no tienes disponibles variables del entorno como DISPLAY o XDG_RUNTIME_DIR y por ello no funcionarán a la primera programas que requieran de GUI. Además el fichero ~/.bashrc hace cosas algo diferentes si se inicia una sesión no interactiva y todo ello puede dar lugar a problemas en la ejecución de tareas con CRON.

El caracter & de ejecución en segundo plano no debes incluirlo desde crontab. En las versiones antiguas de UNIX, si el proceso que arrancó los comandos en segundo plano finalizaba, también lo hacían esos comandos. Para que eso no ocurriera había que utilizar un nohup al inicio del comando y un & al final (nohup miscript &). En la actualidad no estoy seguro del cómo se comporta bash en ese caso, pero, si lo hace como antaño, eso podría explicar lo que te sucede. En todo caso, elimina el & y no pongas nohup.

El uso de redirecciones de stdout ( > ) y stderr ( 2> ) puede dar pistas de si los scripts llegan a funcionar y hasta dónde.

JarvizX
Posts: 1
Joined: Mon May 08, 2017 6:33 pm

Re: No consigo que funcione crontab

Tue May 30, 2017 6:13 pm

Hola podrias intentar colocando la ruta completa del paquete de python es decir:

@reboot /usr/bin/python /home/pi/myscript.py &

ImHarvol
Posts: 50
Joined: Sun Dec 11, 2016 9:19 pm
Location: Alicante, España/Spain
Contact: Website

Re: No consigo que funcione crontab

Thu Jun 01, 2017 12:07 pm

He probado todo esto en el sudo crontab -e, pero no se ha creado ningun log, ni tampoco se ha iniciado el script

Code: Select all

@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt &
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py &
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py 2> test.txt &
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py 2> test.txt
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py >> test.txt &
@reboot python /home/imharvol/apis/hellcase/stream-main_yasuo26.py >> test.txt

@reboot /usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > t$
@reboot /usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > t$
@reboot /usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py &
@reboot /usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py
(Tambien he probado a poner sudo, y tampoco funcionaba.

Y esto es lo que me sale al poner sudo grep CRON /var/log/syslog

Code: Select all

Jun  1 14:08:36 imharvol cron[421]: (CRON) INFO (pidfile fd = 3)
Jun  1 14:08:36 imharvol cron[421]: (CRON) INFO (Running @reboot jobs)
Jun  1 14:08:36 imharvol CRON[556]: (root) CMD (/usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py)
Jun  1 14:08:36 imharvol CRON[557]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py 2> test.txt &)
Jun  1 14:08:36 imharvol CRON[558]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py >> test.txt &)
Jun  1 14:08:36 imharvol CRON[559]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt )
Jun  1 14:08:36 imharvol CRON[567]: (root) CMD (/usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt)
Jun  1 14:08:36 imharvol CRON[571]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt &)
Jun  1 14:08:36 imharvol CRON[568]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py )
Jun  1 14:08:36 imharvol CRON[560]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py >> test.txt)
Jun  1 14:08:36 imharvol CRON[566]: (root) CMD (/usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py > test.txt &)
Jun  1 14:08:36 imharvol CRON[574]: (root) CMD (/usr/bin/python /home/imharvol/apis/hellcase/stream-main_yasuo26.py &)
Jun  1 14:08:36 imharvol CRON[583]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py &)
Jun  1 14:08:36 imharvol CRON[593]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py 2> test.txt )
Jun  1 14:09:01 imharvol CRON[1819]: (root) CMD (  [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean)
Al poner sudo journalctl -u cron, me salia:

Code: Select all

Jun 01 14:31:51 imharvol CRON[512]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py)
Jun 01 14:31:51 imharvol CRON[513]: (root) CMD (python /home/imharvol/apis/hellcase/stream-main_yasuo26.py &)
Jun 01 14:31:51 imharvol CRON[447]: pam_unix(cron:session): session closed for user root
Jun 01 14:31:53 imharvol CRON[448]: pam_unix(cron:session): session closed for user root
Malditos DNS

User avatar
lmarmisa
Posts: 1264
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: No consigo que funcione crontab

Thu Jun 01, 2017 12:35 pm

Si llamas al comando sudo crontab -e estás programando las tareas de arranque con el usuario root. Por ejemplo, si el fichero stream-main_yasuo26.py no tuviera los permisos adecuados para other, el script no se ejecutaría desde root. Lo normal es arrancar el cron desde la cuenta del usuario, que en tu caso parece ser imharvol.

Echa un vistazo a este comando:

Code: Select all

ls -l /home/imharvol/apis/hellcase/stream-main_yasuo26.py
¿Hay alguna razón para que esas tareas no se arranquen desde el usuario imharvol sino desde root?. Lo normal es llamar a crontab del siguiente modo:

Code: Select all

crontab -e
Me da la sensación de que tus problemas se deben a ese intento de arrancar los trabajos desde root.

ImHarvol
Posts: 50
Joined: Sun Dec 11, 2016 9:19 pm
Location: Alicante, España/Spain
Contact: Website

Re: No consigo que funcione crontab

Thu Jun 01, 2017 1:09 pm

Buenas, parece que he encontrado el error, solo que ahora no se como resolverlo :/
Crontab ha mandado un mail al iniciarse, con este error:

Code: Select all

Traceback (most recent call last):
  File "/home/imharvol/apis/hellcase/stream-main_yasuo26.py", line 45, in <module>
    stream.filter(follow=follow_users_ids)
  File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 445, in filter
    self._start(async)
  File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 361, in _start
    self._run()
  File "/usr/local/lib/python2.7/dist-packages/tweepy/streaming.py", line 294, in _run
    raise exception
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='stream.twitter.com', port=443): Max retries exceeded with url: /1.1/statuses/filter.json?delimited=length (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7645ce30>: Failed to establish a new connection: [Errno -2] Name or service not known',))
Malditos DNS

User avatar
lmarmisa
Posts: 1264
Joined: Thu Feb 14, 2013 2:22 am
Location: Jávea, Spain

Re: No consigo que funcione crontab

Thu Jun 01, 2017 1:20 pm

El enlace seguro https://stream.twitter.com/ requiere autorización con usuario y contraseña.

ImHarvol
Posts: 50
Joined: Sun Dec 11, 2016 9:19 pm
Location: Alicante, España/Spain
Contact: Website

Re: No consigo que funcione crontab

Thu Jun 01, 2017 1:24 pm

lmarmisa wrote:El enlace seguro https://stream.twitter.com/ requiere autorización con usuario y contraseña.
¿No se puede puede usar OAuth?
Malditos DNS

srdaza
Posts: 3
Joined: Mon Jul 03, 2017 8:19 pm

Re: No consigo que funcione crontab

Mon Jul 03, 2017 8:26 pm

Yo lo uso así para un script python:

desde consola, sin root: crontab -e

*/10 * * * * /usr/bin/python /home/usuario/folder1/folder2/intrusos.py > /dev/null 2>&1

Esto siempre y cuando no tenga ningun comando con "sudo"

Return to “Español”