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.