Saltar al contenido

Hacer que ssh ejecute un comando en segundo plano en la máquina de destino

Haz todo lo posible por comprender el código correctamente antes de utilizarlo a tu trabajo si tquieres aportar algo puedes compartirlo con nosotros.

Solución:

Tuve este problema en un programa que escribí hace un año; resulta que la respuesta es bastante complicada. Necesitará usar nohup así como la redirección de salida, como se explica en el artículo de wikipedia sobre nohup, copiado aquí para su comodidad.

Nohuping trabajos en segundo plano es útil, por ejemplo, cuando se inicia sesión a través de SSH, ya que los trabajos en segundo plano pueden hacer que el shell se cuelgue al cerrar la sesión debido a una condición de carrera. [2]. Este problema también se puede solucionar redirigiendo los tres flujos de E/S:

nohup myprogram > foo.out 2> foo.err < /dev/null &

Esta ha sido la forma más limpia de hacerlo para mí: -

ssh -n -f [email protected] "sh -c 'cd /whereever; nohup ./whatever > /dev/null 2>&1 &'"

Lo único que se ejecuta después de esto es el comando real en la máquina remota

Redirigir fd's

La salida debe redirigirse con &>/dev/null que redirige tanto stderr como stdout a /dev/null y es sinonimo de >/dev/null 2>/dev/null o >/dev/null 2>&1.

parántesis

La mejor manera es usar sh -c '( ( command ) & )' donde comando es cualquier cosa.

ssh askapache 'sh -c "( ( nohup chown -R ask:ask /www/askapache.com &>/dev/null ) & )"'

Concha Nohup

También puede usar nohup directamente para iniciar el shell:

ssh askapache 'nohup sh -c "( ( chown -R ask:ask /www/askapache.com &>/dev/null ) & )"'

buen lanzamiento

Otro truco es usar nice para ejecutar el comando/shell:

ssh askapache 'nice -n 19 sh -c "( ( nohup chown -R ask:ask /www/askapache.com &>/dev/null ) & )"'

Si haces scroll puedes encontrar las explicaciones de otros creadores, tú igualmente puedes dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *