2012-03-26 2 views
8

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

Вот отрывок из моего сценария инициализации

#! /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#/и т.д./инициализации .d/MyScript начать

Начиная myprogStarting/USR/бен/Java ...

Detatching начать /usr/bin/java...done.

.

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

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

Любые предложения?

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

Я застрял так что любой совет было бы действительно оценено.

Спасибо.

+0

Я должен указать, что моя программа в настоящее время НЕ реализует интерфейс Daemon. Это необходимо? – ColonelPackage

ответ

-4

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

Вы пробовали ms batch dos программировать его еще?

, например

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

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

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

+0

Я просто пытаюсь запустить эту вещь, период. Мне менее интересно наблюдать за ним, как только я могу подтвердить, что он работает.Моя платформа представляет собой встроенный linux (Angstrom), поэтому программирование ms dos dos не является вариантом. Спасибо за предложение. – ColonelPackage

14

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

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

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

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

+0

--chdir помогите мне решить мою проблему, спасибо – Lukino

+0

Самый расстраивающий бит в этой истории - это то, что 'start-stop-daemon' проглатывает все выходные данные программы, если не указано иначе –

+0

@Ivan: см. Это обходное решение: http: // stackoverflow .com/а/21029952/400925 – Francois