Mantener proceso al terminar ssh

davidpoza

Buenas,
Tengo una máquina a la que me conecto mediante el protocolo ssh y en ella lanzo el proceso btdownloadcurses archivo.torrent, pretendiendo que éste se mantenga en ejecución incluso cuando termine mi sesión ssh.
He leido algo en google acerca del comando nohup que me permite lanzar procesos que no mueren al terminar la sesión, y además me graba todo lo que hace dicho proceso en un log.

Mi problema surge justo con el btdownloadcurses ya que da un error al ejecutarlo con nohup y en el log veo lo siguiente:

[[?1049h[[1;24r[[m[(B[[4l[[?7h[[?1l[>Traceback (most recent call last):
File "/usr/bin/btdownloadcurses", line 403, in ?
curses_wrapper(run, errlist, argv[1:])
File "/usr/lib/python2.4/curses/wrapper.py", line 49, in wrapper
curses.nocbreak()

_curses.error: nocbreak() returned ERR

Alguien puede solucionarme el problema?
O en último caso, alguien conoce otro cliente que sea similar, con interface por consola?
Muchas gracias

Y

Yo he usado el btdownloadcurses con nohup y me ha funcionado. El problema es que es horrible para monitorizarlo al iniciar una sesión nueva.

Para ello puedes usar varias cosas:

El nohup de toda vida.

Puedes usar screen o el conspy

Puedes utilizar mldonkey (creo que también hay otros para control a través de consola, pero no conozco)

Y puedes usar tu sesión gráfica.

Si el nohup no te funciona, no se porqué será, a mi me funciona (acabo de hacer una prueba) puede ser algún problema con las ncurses. Ni idea. No es algo para preocuparse.

El screen es un programa maravilloso. Para que nos entendamos rápido, y no voy a meterme en tecnisismos, lo que hace es crear una sesión de consola, pero como si fuera un proceso. Puedes ejecutar lo que sea ahí, salir de dicha sesión pero se sigue ejecutando. Es más, inicias otra sesión (da igual si es por ssh, tty o por pts) y ejecutas el screen para que te abra el proceso ejecutandose, y te continua la ejecución como si nunca hubieras salido nunca de dicha sesión.

Incluso, dos usuarios pueden controlar esa misma sesión, como si los dos estuvierais en la misma consola. Lo que hace uno lo ve el otro.

Luego tienes el conspy, es más o menos lo mismo. Solo que es para monitorizar sesiones de consolas ya iniciadas. No es como el screen que es un proceso a parte, es como si espiaras lo que se está haciendo en una consola y manipularlo a voluntad.

El mldonkey, es una aplicación maravillosa, soporta redes e2k, fastrack(kazaa), gnutella, opennapster, bittorrent, y no se cuantas más.

La ventaja es que puedes administrarlo tanto por consola (a través de telnet, pero vamos, te conectas por ssh y luego haces un telnet localhost), por web y por gui, trae las tres implementaciones por defecto. Vamos, que si estás fuera de tu casa, por web es mucho más cómodo ;).

Y por último entorno gráfico. Imaginemos que usas el azureus para descargar, pues nada, simplement exportas la ejecución de la aplicación a la sesion gráfica que tienes abierta.

ejemplo:
DISPLAY=:0.0 azureus archivo.torrent (suponiendo que se ejecute así, no lo he probado). El DISPLAY=:0.0 te abrirá la aplicación en la sesión gráfica que tengas iniciada en el display 0.0.

Lo malo de éste último, es que no puedes administrar descargas ni nada. Pero lo puedes ejecutar para que continue esas descargas que dejastes pendiente

davidpoza

muy bien explicado, me ha venido de lujo ;)

K

Yo uso start-stop-daemon, con el argumento --background.

Échale un vistazo, porque creo que es exactamente lo que buscas.

Usuarios habituales