ssh - install nohup ubuntu
jsch ChannelExec ejecuta un script.sh con nohup "pierde" algunos comandos (1)
Tengo un script .sh que pega muchos otros scripts, llamados por jsch ChannelExec desde una aplicación de Windows.
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("/foo/bar/foobar.sh");
channel.connect();
si ejecuto el comando como "nohup /foo/bar/foobar.sh >> /path/to/foo.log &", todos los trabajos a largo plazo (operaciones de bases de datos, procesamiento de archivos, etc.) parecen perderse.
verificando el archivo de registro, solo encuentra esos elementos de eco (antes y después de una operación a largo plazo, calcula el tiempo de ejecución, etc.).
Revisé los permisos, $ PATH, agregué source / etc / profile a mi .sh pero ninguno de estos funciona.
pero cuando ejecuto el comando normalmente (ejecución sincronizada, imprimo todas las salidas de eco a mi cliente java en Windows), todo va bien.
es un problema realmente específico. Espero que alguien con experiencia pueda ayudarme.
gracias de antemano.
Han
Resuelto
Un problema diferente que suele surgir en esta situación es que ssh se niega a cerrar la sesión ("se cuelga"), ya que se niega a perder datos desde / hacia los trabajos en segundo plano. [6] [7] Este problema también se puede solucionar redirigiendo las tres secuencias de E / S.
Mi problema es que psql y pg_bulkload imprimen sus salidas para err stream.
En mi script, no redirigí las secuencias err.
Todo fue bien al redirigir las secuencias de err al mismo archivo de registro.
nohup foo.sh > log.log 2>&1 &
Gracias a Atsuhiko Yamanaka, creó una gran biblioteca JSch , y PaĆlo Ebermann para la documentación .