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


17

¿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 el sueño, a pesar de que el sueño se ejecuta en segundo plano.


Probablemente quieras el &exterior de las comillas.
Brad Gilbert

1
No, eso solo pone todo el kit y el kaboodle en segundo plano y no puedo escribir mi contraseña.
Richard Hoskins el

Respuestas:


19

SSH tiene un modificador -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á viviendo en segundo plano, por lo que si cierra 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'

Si hago 'ssh remotemachine -n' comando de ejecución larga> withremoteredirects 2> & 1 </ dev / null & 'y el cliente se cierra, ¿se completará el comando?
Richard Hoskins el

Afaik no. Si se pierden las conexiones ssh, el demonio ssh debe terminar todos los terminales "dentro" de ssh. Respuestas desde que el terminal inició el comando en el que terminarían, ya que finalizó su proceso principal. Pero vale la pena intentarlo;)
Martin

¿Qué pasa con 'nohup' en lugar de 'pantalla' en el lado del servidor?
Richard Hoskins el

@Brad Gilbert ¿Nada? Se me ocurren algunas cosas, pero una cosa que no tienen en común es que la 'pantalla' no está disponible en todas las máquinas POSIX.
Richard Hoskins el


6

Utilice nohup, 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, solo use el parámetro -f de ssh:

ssh -f localhost 'sleep 60'

Probablemente podría combinar las dos redirecciones con &>/dev/null.
Brad Gilbert el

@BradGilbert Esa sintaxis no es compatible con POSIX; Es difícil argumentar a favor de sacrificar la compatibilidad para salvar algunos caracteres.
tripleee

2

O, después de iniciar sesión con el uso ssh, comience screensi desea volver más tarde, para ver el progreso o la salida.


También puede usar "tmux", que personalmente me parece más fácil de configurar. Ambas aplicaciones son prácticamente equivalentes y cada una tiene sus ventajas y desventajas.
mzuther
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.