El comando nohup no puede imprimir la salida en nohup.out

El comando nohup no puede imprimir la salida en nohup.out

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.outcualquier 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 nohupal entorno del script (por ejemplo export nohup=/usr/bin/nohup), $nohupse 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 nohupno 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'.

información relacionada