8

我有一段时间使用 start-stop-daemon 让 java 程序在 init 脚本中正确启动。我已经编写了 init 脚本,它似乎可以运行,但之后再也没有代表正在运行的程序的进程。

这是我的初始化脚本的片段

#! /bin/sh
#
#

DAEMON="/usr/bin/java"
DAEMON_ARGS="-server -cp <bunch of RMI arguments and classpath stuff> -jar <absolute path>/myprog.jar"

PIDFILE="/var/run/myprog.pid"

case "$1" in
start)
    echo -n "Starting myprog"
    start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --startas "$DAEMON" -- $DAEMON_ARGS
    echo "."
;;

当我尝试通过 /etc/init.d 启动它时,我得到以下信息:

/etc/init.d# /etc/init.d/myscript 启动

正在启动 myprogStarting /usr/bin/java...

分离以启动 /usr/bin/java...完成。

.

之后,没有运行 java 解释器进程,执行 myprog.jar

我尝试了--exec、--start 的各种组合,结果或多或少相同。如果我能对正在发生的事情有更多的了解,我相信我可以解决这个问题,但我什至不知道该怎么做。

有什么建议么?

(我在嵌入式 ARM 平台上运行 Angstrom,因此 Java Service Wrapper 并不是一个真正可行的选择,即我认为它不适用于 ARM)

我被困住了,所以任何建议都会非常感激。

谢谢。

4

2 回答 2

14

尝试两件事,首先尝试删除--startas并使用--exec,如下所示:

start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --exec "$DAEMON" -- $DAEMON_ARGS

其次,由于您正在使用--background尝试指定--chdir选项,如果您不这样做,工作目录最终会是/.

我最终偶然发现了您试图解决我的问题的问题,该问题最终由 解决--chdir,我相信它也会解决您的问题。

于 2012-05-21T07:30:23.373 回答
-4

您正在寻找一种运行方式并能够对其进行监控?

你试过ms批处理dos编程了吗?

例如

@echo off
cd DirectoryOfFiles
echo "Starting up..."
java -Xmx512m mainFile
pause

主文件 = 主.java?DirectoryOfFiles = 您拥有所有类文件的目录,如果运行文件是同一目录,只需删除此行

希望这就是你要的

于 2012-03-26T01:47:46.807 回答