domingo, 29 de octubre de 2017

Opinión: Una pequeña pega en SSH


El pasado día 16-06-2017, escribí a Macjosan un correo electrónico, con el asunto:

Una pequeña pega en SSH

La misiva decía así:

Estimado Macjosan, te escribo la presente debido a una pequeña pega a la hora de "cacharrear" con terminales a través de SSH.
Me explico, de un tiempo a esta parte me conecto a través del móvil con el servidor utilizando para ello JuiceSSH, un emulador de terminal de android, utilizando youtube-dl (que esta instalado en el servidor) me descargo series desde paginas de internet, copiando y pegando la dirección url de servidores streamcloud, hasta aquí la cosa funciona y pita bien, sin problemas, la descarga empieza y puedo descargar a la carpeta que quieras. La pega viene, a la hora de salir del cliente, si hago eso sin que haya concluido la descarga, automáticamente la descarga deja de funcionar y la operación falla.
La pregunta es la siguiente: ¿sabes como salir del terminal cliente y que se siga ejecutando en el servidor la operación, comando o script, que desde el cliente (móvil, ordenador, etc) has mandado ejecutar?.
Esto que "a priori" puede parecer una autentica chorrada (y seguramente lo es) me trae de cabeza, si supieras la solución me lo comunicas por este medio.
Comentarte que he probado ciertas formas que explican en foros, como poner & al final del comando y otras más exóticas que probé y no funcionaron.
Dándote las gracias por anticipado me despido.
Un saludo.
73 de Domingo....
P.D. Las conexiones de las que hablo, siempre las hago desde mi misma red LAN.

Lamentablemente Macjosan, nunca me contesto, bien por que no sabia la respuesta, bien por que no tenia tiempo o bien por que yo no supe expresar con claridad mi duda.

Mas tarde escuchando a Angel de Ugeek, descubrí el servicio Dataplicity y la duda se transformo de una simple chorrada en una imperiosa necesidad, ya que ahora podía comunicarme con mi servidor desde cualquier punto del planeta en donde hubiera un punto de acceso a internet. No se ha vosotros pero cuando a un servidor se le ocurre una idea, la tiene que llevar a cabo de una forma inmediata, ya que si no corre el riesgo de olvidar, el que o el como se me ocurrió y la forma en que pensé ejecutarla.

Así que ahora era un tema primordial, el poder ejecutar un proceso desde el terminal remoto y al cerrar este “no matar” dicho proceso. Probé el comando “disonw”, justamente con los parámetros:


disown -h %1

bg 1

A mi esto no me funciono, ya que no entendí nunca lo que realmente hacia el comando, ni como se quedaba el proceso, el caso es que cuando ejecutaba “disow” con “&” al final de la  serie de comandos, recuperaba el terminal durante un breve periodo de tiempo “un segundo más o menos” y después la salida del proceso volvía al terminal y si cerrada este el proceso se “mataba”.

El comando “nohup”

Hasta que al fin di con el comando “nohup”, que “desvía” de una forma eficaz  la salida del proceso, creando en la carpeta que cada uno elija un archivo llamado “nohup.out” por lo que es indispensable que si por ejemplo el proceso iniciado es una descarga, la misma se  realice en una carpeta especifica para realizar sin ningún tipo de problemas la misma. El formato por ejemplo para realizar una descarga seria el siguiente:

osiris@osiris:/home/osiris/descargas/pelicula/$ nohup wget “dirección url” &

El archivo de descarga, junto con el archivo “nohup.out” se descargaran en la carpeta   “película”, una vez se inicie el proceso, recuperaremos el terminal y podremos cerrar el mismo    sin afectar el proceso iniciado.

No hay comentarios:

Publicar un comentario