start-stop-daemon и Java-программа - PullRequest
8 голосов
/ 26 марта 2012

У меня было немало времени, чтобы заставить Java-программу правильно запускаться в сценарии инициализации с использованием start-stop-daemon. Я написал сценарий инициализации, и он, кажется, запускается, но после этого никогда не бывает процесса, представляющего работающую программу.

Вот фрагмент моего скрипта инициализации

#! /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 start

Запуск myprogStarting /usr/bin/java...

Сбор данных для запуска /usr/bin/java...done.

.

После этого не выполняется процесс интерпретатора Java, выполняющий myprog.jar

Я пробовал различные комбинации --exec, --start с более или менее одинаковыми результатами. Если бы я мог лучше понять, что происходит, я уверен, что смогу понять это, но я не уверен, как это сделать.

Есть предложения?

(я запускаю Angstrom на встроенной платформе ARM, поэтому Java Service Wrapper на самом деле не является жизнеспособным вариантом, т. Е. Я не думаю, что он доступен для ARM)

Я застрял, поэтому любой совет был бы очень признателен.

Спасибо.

Ответы [ 2 ]

14 голосов
/ 21 мая 2012

Две вещи, которые нужно попробовать, сначала попробуйте удалить --startas и использовать вместо этого --exec следующим образом:

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

Во-вторых, поскольку вы используете --background, попробуйте указать параметр --chdir, если выразве рабочий каталог не заканчивается как /.

В итоге я наткнулся на ваш вопрос, пытаясь решить мою проблему, которая в конечном итоге была решена --chdir, я верю, что она разрешит и вашу.

0 голосов
/ 26 марта 2012

вы ищете способ запуска и возможности его мониторинга?

вы уже пробовали программировать в MS Batch DOS?

например

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

mainFile = main.java?DirectoryOfFiles = каталог, в котором находятся все файлы классов, если запущенный файл - это тот же каталог, просто удалите эту строку

, надеюсь, это то, что вы просите

...