Esto sigue bloqueando:
ssh host nohup cmd
Esto todavía deja la conexión abierta:
ssh host nohup cmd &
Esto sigue bloqueando:
ssh host nohup cmd
Esto todavía deja la conexión abierta:
ssh host nohup cmd &
Respuestas:
Prueba esto:
ssh host batch cmd
batch
depende de tener un sistema cron
/ trabajo at
en el sistema remoto.
El &
en su ejemplo separará el comando ssh, pero no su programa remoto.
Esto parece funcionar:
ssh remote-host 'tail -f / var / log / syslog &' &
ssh remote-host 'tail -f /var/log/syslog > /dev/null &' &
El primero &
separará el comando para el host remoto, y el segundo &
separará el comando ssh en sí
En mi ejemplo, el comando de cola todavía se está ejecutando después de haber cerrado la conexión.
editar esto no parece funcionar como tail
salidas poco después de que la conexión se haya cerrado realmente.
Esto puede estar relacionado con el hecho de que está escribiendo a STDOUT
lo que probablemente levantará una tubería rota después de que se cierre la conexión
edit 2 funciona bien al redirigir el comando de cola a / dev / null ^ _ ^
Solo tenga cuidado y no escriba en stderr / stdout, ni redirija la salida a un destino local
Aparentemente, este problema es de larga data (¡incluso más que su pregunta!). La solución es redirigir stdout y stderr. El ejemplo del libro de texto es este:
ssh server 'sleep 20 & exit'
que se cuelga por 20 segundos. Usando bash puedes reescribirlo en:
ssh server 'sleep 20 >/dev/null 2>&1 & exit'
que soluciona el problema Para tcsh usarías algo como:
ssh server '(sleep 20 >/dev/null) >& /dev/null & exit'
Referencias