我编写了一个 bash 脚本来在 ubuntu 或 Red Hat 环境中执行我的 jar 文件。这是我的 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
sonohup
根本没有被调用。你可能想要
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
因为如手册页中所述,输出文件的规则取决于标准输出是否是终端:
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'.