我有一个胖 JAR ( Spring Boot ),如果我开始使用 java -jar filename.jar
创建两个日志文件:一个应用程序日志(通常是标准输出)和另一个创建一个每次访问网络服务器时都会输入。
现在,当我使用 /etc/init.d/ 中的文件将此作为服务启动时(请参阅下面的代码段),我没有创建任何日志文件(/opt/service-name/log 仅在应用程序启动前显示标准输出)。这不是权限问题 - 我尝试用没有权限的用户启动服务,但它没有启动。我尝试了 find/logfile.log
但没有成功。
daemon --user=root --pidfile=/var/run/service-name.pid java -jar /opt/service-name/filename.jar > /opt/service-name/log 2>&1 & echo $!
为什么没有创建日志文件有什么想法吗?
最佳答案
尝试先将 stderr 重定向到 stdout,然后再将 stdout 重定向到文件,例如
daemon --user=root --pidfile=/var/run/service-name.pid java -jar /opt/service-name/filename.jar 2>&1 >/opt/service-name/log & echo $!
此外,& echo $!
部分在我看来很可疑。如果我读 specs正确地,单个 &
可能会导致 echo $!
在守护程序返回之前返回,这意味着您将得到错误的 pid。你想运行 && echo $!
还是 ; echo $!
而不是?
关于java - 将 JAR 作为服务运行时未显示日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206586/