2012-03-26 20 views
8

Mam sporo czasu, aby program java został poprawnie uruchomiony w skrypcie init za pomocą start-stop-daemon. Napisałem skrypt init i wygląda na to, że działa, ale potem nie ma żadnego procesu reprezentującego działający program.start-stop-daemon i program java

Oto fragment mojego skryptu 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 "." 
;; 

Gdy próbuję uruchomić go poprzez /etc/init.d otrzymuję następujący:

/etc/init.d#/etc/init .d/myscript rozpocząć

Zaczynając myprogStarting/usr/bin/java ...

Detatching zacząć /usr/bin/java...done.

.

Potem nie ma java zakonczeniu interpreter wykonujący myprog.jar

Próbowałem różnych kombinacji --exec, --start z mniej więcej takie same wyniki. Gdybym mógł uzyskać lepszy wgląd w to, co się dzieje, jestem pewien, że mógłbym to zrozumieć, ale nie jestem pewien, jak to zrobić.

Wszelkie sugestie?

(Biegnę angstrom na osadzonym platformy ARM więc obsługa Java Wrapper naprawdę nie jest realną opcją, tzn. Nie sądzę jego dostępny dla ARM)

utknąłem więc wszelkie porady byłoby naprawdę docenione.

Dzięki.

+0

Należy zauważyć, że mój program aktualnie NIE implementuje interfejsu Daemon. Czy to jest wymagane? – ColonelPackage

Odpowiedz

-4

szukasz sposobu, aby uruchomić i móc go monitorować?

wypróbowałeś już programowanie wsadowe ms?

np

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

mainFile = main.java? DirectoryOfFiles = katalogu masz wszystkie pliki klas w razie uruchomiony plik jest taki sam katalog prostu usunąć tę linię

nadzieją jest to, o co prosisz dla

+0

Po prostu próbuję uruchomić to, okres. Jestem mniej ciekawy w monitorowaniu go, gdy tylko mogę potwierdzić, że faktycznie działa.Moja platforma jest wbudowanym linuxem (Angstrom), więc programowanie wsadowe ws. Ws. Nie jest opcją. Dzięki za sugestię. – ColonelPackage

14

dwie rzeczy spróbować, najpierw spróbuj usunąć --startas i używać --exec zamiast tak:

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

drugie skoro używasz --background próby podania opcji --chdir, jeśli nie katalog roboczy kończy się /.

Natknąłem się na twoje pytanie, próbując rozwiązać mój problem, który ostatecznie został rozwiązany przez --chdir, uważam, że rozwiąże on także twoją.

+0

--chdir pomóż mi rozwiązać mój problem, dzięki – Lukino

+0

Najbardziej frustrujący kawałek w tej historii jest to, że 'start-stop-daemon' pochłania wszystkie wyniki programu, jeśli nie powiedziano inaczej –

+0

@Ivan: zobacz to obejście: http: // stackoverflow .com/a/21029952/400925 – Francois

Powiązane problemy