Vaspincho
Posts: 17
Joined: Tue Oct 08, 2013 3:10 pm

Dejar programa ejecutandose despues de cerrar conexion SSH

Tue Sep 02, 2014 12:00 pm

Hola,
estoy intentando crear un programa en python para hacer timelapses. La idea es dejar la RPI en un lugar con un powerbank conectado toda la noche e ir tomando fotografías. El programa tiene dos opciones, la primera toma una foto de baja calidad para ver el encuadre, y una vez visto que el encuadre es el correcto, la segunda opción te pide cuantas fotos tomar y cada cuanto tiempo. A la RPI me conecto con el móvil por SSH, pero el problema que me encuentro es cuando desconecto el móvil de la conexión SSH se cierra la sesión y se deja de ejecutar el programa. He probado con NOHUP pero no me funciona.

¿Alguna solución?

Gracias

User avatar
actkk2000
Posts: 1309
Joined: Wed Apr 02, 2014 3:22 am

Re: Dejar programa ejecutandose despues de cerrar conexion S

Tue Sep 02, 2014 12:39 pm

Prueba ejecutar el programa al inicio, con crontab:

Code: Select all

crontab -e
Agregar al final el programa a ejecutar, con el prefijo que indica que lo debe hacer al iniciar:

Code: Select all

@reboot python /home/pi/programa.py
Lo que pongo es como ejemplo, reemplaza la ubicación y nombre por el tuyo.
Agrega sudo luego de python si require permisos administrador.

Slds!
Robot +Camara +Sensores +Encoder +Servo +Matriz8x8 +Joystick:
https://www.raspberrypi.org/forums/viewtopic.php?f=76&t=130470

blamarpa
Posts: 454
Joined: Thu May 23, 2013 4:02 pm
Location: España

Re: Dejar programa ejecutandose despues de cerrar conexion S

Tue Sep 02, 2014 2:24 pm

Echa un vistazo:
http://www.kossboss.com/linux---move-ru ... cess-nohup
Y ya de paso, para pasar tus fotos a vídeo, aquí también puedes encontrar ayuda aunque quizá ya lo hayas resuelto:
http://www.kossboss.com/linux---app-scr ... e---capush

raspberrypivictim
Posts: 30
Joined: Sun Jan 22, 2012 10:35 pm

Re: Dejar programa ejecutandose despues de cerrar conexion S

Wed Sep 03, 2014 7:30 am

Igual para este caso concreto no te sirve, pero para dejar procesos corriendo y no tener que dejar la sesión ssh abierta, a mi me gusta mucho screen.

Aquí hay un tutorial, que es el que seguí yo para aprender a usarlo. http://tuxpepino.wordpress.com/2007/05/ ... as-screen/

User avatar
yv1hx
Posts: 383
Joined: Sat Jul 21, 2012 10:09 pm
Location: Now an expatriate, originally from Zulia, Venezuela
Contact: Website Skype

Re: Dejar programa ejecutandose despues de cerrar conexion S

Wed Sep 03, 2014 5:14 pm

Hola Vaspincho:

La solucion es colocar un caracter & al final de cada linea de comando, de esta forma el script o programa se ejecuta y finaliza su tarea independientemente si el usuario esté logeado o no; obviamente, tienen que ser tareas no interactivas, vale decir, aquellas que no requieran de un humano para hacer su trabajo (pero creo que esto ya lo tienes claro) ;)

Te inserto abajo un extracto de mis tareas cron:

Code: Select all

#
# m h  dom mon dow   command
*/1 * * * * uptime > /var/www/status.txt &
*/2 * * * * /home/pi/TempHistory/tempreg.sh &
*/2 * * * * php /home/pi/AmbientTemp/ReadAmbientTemp.php &
*/60 * * * * boinccmd --get_tasks > /var/www/boinc/boincstats.txt &
#
Aprovechando el post, les dejo este enlace para ayudar a la programacion de tareas cron:

http://www.generateit.net/cron-job/

Este es un "ayuda memoria" para el programador de tareas cron, no es de mi autoria, lamentablemente no recuerdo de donde lo copie :oops:

Code: Select all

#
# CronTab_Cheat_Sheet
#
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  /Path/To/Command/ToBe/Executed
#
Pueden insertarlo sin inconvenientes dentro de su archivo cron.

Suerte!
Marco-Luis
Telecom Specialist (Now Available for Hire!)

http://www.meteoven.org
http://twitter.com/yv1hx

Shopete
Posts: 6
Joined: Mon Sep 08, 2014 12:15 pm

Re: Dejar programa ejecutandose despues de cerrar conexion S

Mon Sep 08, 2014 12:23 pm

Yo uso el comando nohup, esto hace que se ignore el proceso al cerrar la conexion SSH con lo cual sigue abierto aunque no estes loggeado.

Por ejemplo, si quiero reproducir una pelicula desde el omxplayer iniciando desde el movil, no quiero tener la conexion abierta todo el rato ya que gasta bateria asi que escribo nohup antes del correspondiente comando:

Code: Select all

nohup omxplayer pelicula1.avi
Luego, cuando quieras cerrar el proceso, o esperas a que termine por si mismo o lo buscas en las lista de procesos y lo matas tu. Yo para hacerlo rapido mato todos los procesos de mi sesion con:

Code: Select all

sudo killall -u usuario
Donde usuario es, obviamente, tu usuario, por ejemplo, pi.

Tambien puedes hacer un reboot y listo.

Un saludo

Return to “Español”