GNU/Linux >> Tutoriales Linux >  >> Linux

Haciendo un comando de larga ejecución en ssh

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ándar
  • 2>&- - 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.


Linux
  1. Cómo encontrar conexiones SSH activas en Linux

  2. Ssh:¿restringir un usuario de Ssh/scp/sftp a un directorio?

  3. ¿Ssh hace que el ciclo while se detenga?

  4. ¿Carácter especial '#' en el comando Perl Ssh?

  5. ¿El comando de suspensión usando el comando de pantalla no se muestra en Ps?

Comando SSH

Cómo pasar la contraseña al comando SSH en Linux

Comando de pantalla en Linux explicado

¿Buscar texto en la salida del terminal?

Cómo usar el comando de pantalla en Linux

Comando de Linux para esperar a que un servidor SSH esté activo