it-swarm-es.tech

¿Cómo puedo usar ssh para ejecutar un comando en una máquina Unix remota y salir antes de que se complete el comando?

¿Cómo puedo usar ssh para ejecutar un comando en una máquina Unix y salir antes de que se complete el comando?

Por ejemplo, si escribo

ssh localhost 'sleep 60 &'

ssh se cuelga en mi terminal hasta que se completa la suspensión, aunque la suspensión se ejecuta en segundo plano.

17
Richard Hoskins

SSH tiene un interruptor -f que hace exactamente lo mismo que usar Nohup en su cliente, pero hace posible que ssh solicite una contraseña. Úselo así:

ssh localhost -f 'command'

Pero: SSH seguirá funcionando en segundo plano, por lo que si apaga el cliente antes de que finalice el comando en el servidor, se cancelará. Si desea que la conexión ssh se cierre después de ejecutar el comando, puede usar la pantalla en el lado del servidor:

ssh localhost -f 'screen -d -m sleep 60'
19
Martin

Use Nohup, la redirección stdout/stderr y ejecute el comando en segundo plano:

 Nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

EDITAR: O incluso mejor, simplemente use el parámetro -f de ssh:

ssh -f localhost 'sleep 60'
6
neu242

O después de iniciar sesión usando ssh, comience screen si es posible que desee volver más tarde, para ver el progreso o la salida.

2
Arjan