La ejecución de escritura del golpe a través de Java en segundo plano después de la conexión ssh se cierra

totothegreat:

Estoy usando Java para ejecutar un simple script bash en un equipo Linux remoto.

La escritura del golpe llamado "shortoracle.bash" tiene este script:

#!/bin/sh
runsql() {
   i="$1"
   end=$((SECONDS+360))
   SECONDS=0
   while (( SECONDS < end )); do
   echo "INSERT into table_$i (col1) values (CURRENT_TIMESTAMP);" | sqlplus username/password
   sleep 1
   done
}


for i in $(seq 1 10); do
 echo "DROP TABLE table_$i;" | sqlplus username/password
 echo "CREATE TABLE table_$i (col1 TIMESTAMP WITH TIME ZONE);" | sqlplus username/password
 runsql $i &
done
wait

En pocas palabras: crear una conexión en paralelo 10 que ejecutar consultas durante 360 ​​segundos.

Desde mi programa Java que ejecute el siguiente comando:

sshconnection.execute("nohup su - oracle -c './shortoracle.bash'",2000);

El ssh ejecuta el script con éxito.

Quiero, después de un tiempo de espera de 2 segundos (el segundo parámetro) para terminar la conexión ssh, pero para el script continúe funcionando correctamente en el fondo (por lo tanto el nohup, o eso creía yo), que no está sucediendo:

Después de 2 segundos cuando terminar el sshconnection, el programa bash simplemente deja de funcionar:

  • Sólo 3 de las 10 conexiones están abiertas.

  • No hay más insertos sucediendo.

Si me dan la conexión de un tiempo de espera más largo, todo va bien, pero yo no quiero que colgará en esta conexión específica, lo que necesito para seguir adelante con el programa.

¿Qué estoy haciendo mal aquí?

Sven Hakvoort:

Usted debe agregar &después de su mando, es decir,

sshconnection.execute("nohup su - oracle -c './shortoracle.bash' &",2000);

Desde nohup sí de lo contrario se desconecte cuando se cierra la conexión SSH. Con &ejecuta 'nohup' en sí en el fondo y, por tanto, permitir que continúe funcionando después de cerrar la conexión SSH.

¡Espero que esto te ayude!

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=438125&siteId=1
Recomendado
Clasificación