Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
背景,Java&;初始化脚本_Java_Bash_Shell_Init - Fatal编程技术网

背景,Java&;初始化脚本

背景,Java&;初始化脚本,java,bash,shell,init,Java,Bash,Shell,Init,我正在尝试为java程序编写一个init脚本。这个程序本身没有后台功能,所以我用&来做。它将日志文件写入标准输出。 我遇到的问题是关于init脚本中的RETVAL。下面是我正在使用的函数: JAR_FILE=/opt/application/server/server.jar JAVA=/usr/bin/java start() { echo -n $"Starting ${NAME}: " daemon --pidfile=${PID_FILE} --u

我正在尝试为java程序编写一个init脚本。这个程序本身没有后台功能,所以我用&来做。它将日志文件写入标准输出。 我遇到的问题是关于init脚本中的RETVAL。下面是我正在使用的函数:

JAR_FILE=/opt/application/server/server.jar
JAVA=/usr/bin/java
    start() {
        echo -n $"Starting ${NAME}: "
        daemon --pidfile=${PID_FILE} --user $USER \
            $JAVA $JAVA_ARGS >> /var/log/application/server.log &
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch $LOCKFILE
        return $RETVAL
    }
当我运行init脚本时,应用程序启动或很好地失败,问题是retval正在写入日志文件,而不是stdout:

[root@rpmbuild rpmbuild]# /etc/init.d/application-server start
Starting application-server:
[root@host]# tail /var/log/application/server.log
JAVA APPLICATION ERRORS ARE HERE
[FAILED]

我是否可以将其记录到stdout,并确保任何检索(无论是好的还是坏的)都会回显到stdout?

也许,您可以打印到java中的stderr,以分离标准日志和错误。您的
>
将只重定向标准输出


顺便说一句,测试
$?
会让人惊讶,而您的程序还没有执行,因为background-ed.

在使用
守护进程
命令时,可以选择如何引导输出

 -l, --errlog=spec         - Send daemon's error output to syslog or file
 -b, --dbglog=spec         - Send daemon's debug output to syslog or file
 -o, --output=spec         - Send client's output to syslog or file
 -O, --stdout=spec         - Send client's stdout to syslog or file
 -E, --stderr=spec         - Send client's stderr to syslog or file
我将使用-o选项更改输出,而不是重定向。您也不必为任务设置背景

daemon -o /var/log/application/server.log -name SuperJavaProgram \
--pidfile=${PID_FILE} --user $USER $JAVA $JAVA_ARGS
然后,您可以测试它是否正在运行
守护进程--running-n SuperJavaProgram