
Escribí un script bash para ejecutar mi archivo jar en un entorno ubuntu o Red Hat. Aquí está mi script bash
#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
Mi script bash ejecutará el jar que había desarrollado, espero imprimir el resultado del archivo jar en nohup.out
cualquier archivo txt, para poder rastrear cualquier problema fácilmente, pero parece que no imprimo nada cuando ejecuto el script. , imprime todos los resultados en la terminal. Pero cuando ejecuto nohup java -jar /home/chikin/Downloads/hardcoded.jar &
directamente desde la terminal, puedo imprimir toda la salida del jar en nohup.out. ¿Puedo saber por qué mi script no funciona? Mi script tampoco puede activarse cada vez que reinicio mi máquina Ubuntu, probé muchas de las soluciones pero ninguna funciona bien.
Respuesta1
A menos que haya exportado el valor de nohup
al entorno del script (por ejemplo export nohup=/usr/bin/nohup
), $nohup
se evaluará como una cadena vacía; de ahí su comando
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
se vuelve simple
java -jar /home/chikin/Downloads/hardcoded.jar
por lo que nohup
no se invoca en absoluto. probablemente quieras
nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
(sin el $
).
Probablemente sea mejor hacer explícito el archivo de salida:
nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out
ya que como se indica en la página de manual, las reglas para el archivo de salida dependen de si la salida estándar es una terminal o no:
If standard output is a terminal, append output to 'nohup.out' if pos‐
sible, '$HOME/nohup.out' otherwise. If standard error is a terminal,
redirect it to standard output. To save output to FILE, use 'nohup
COMMAND > FILE'.