Solución 1:
La mejor manera es usar screen (en el servidor) para iniciar una sesión para ejecutar el comando y luego desconectar la pantalla para que siga ejecutándose y pueda hacer otras cosas, o simplemente desconectarse del servidor. La otra opción es usar nohup en combinación con & entonces tendrías nohup <command> &
Solución 2:
También puedes usar disown si ya ha iniciado el proceso sin screen o nohup
Solución 3:
Las respuestas existentes pueden funcionar bien, pero necesitaba algo para BusyBox (un shell y un conjunto de herramientas para hardware mínimo como enrutadores domésticos). Mi sistema no tiene screen , dtach , at , disown , o incluso nohup ! Entonces, gracias a tbc0 en SO (enlace), encontré esta joya. Regresa inmediatamente pero el proceso del servidor continúa ejecutándose:
ssh myserver 'sleep 100 >&- 2>&- <&- &'
O, si se necesitan varios comandos:
ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'
Explicación:
>&-- cerrar el controlador de salida estándar2>&-- cerrar stderr<&-- cerrar stdin&- poner el proceso en segundo plano
Esto no utiliza programas externos y debería funcionar en ksh, ash, Bourne shell, bash, etc.