
Я написал скрипт bash для выполнения моего jar-файла в среде Ubuntu или Red Hat. Вот мой скрипт bash
#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
Мой скрипт bash выполнит jar, который я разработал, я надеюсь вывести вывод из jar-файла в nohup.out
любой txt-файл, поэтому я могу легко отследить любую проблему, но, похоже, при выполнении скрипта ничего не выводится, он выводит весь вывод в терминале. Но когда я запускаю его nohup java -jar /home/chikin/Downloads/hardcoded.jar &
напрямую из терминала, он может вывести весь вывод jar в nohup.out. Могу ли я узнать, почему мой скрипт не работает? Мой скрипт также не может запускаться каждый раз, когда я перезагружаю свою машину Ubuntu, я протестировал много решений, но ни одно из них не работает должным образом
решение1
Если вы не экспортировали значение nohup
в среду скрипта (например export nohup=/usr/bin/nohup
, ), то $nohup
результатом будет пустая строка — отсюда и ваша команда
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
становится простым
java -jar /home/chikin/Downloads/hardcoded.jar
так что nohup
не вызывается вообще. Вы, вероятно, хотите
nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
(без $
).
Вероятно, лучше явно указать выходной файл:
nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out
поскольку, как отмечено в man-странице, правила для выходного файла зависят от того, является ли стандартный вывод терминалом или нет:
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'.