2012-03-26 60 views
8

Tôi đang có một thời gian để chạy một chương trình java để khởi chạy đúng cách trong một init script sử dụng start-stop-daemon. Tôi đã viết init script và nó dường như chạy nhưng không bao giờ có một quá trình sau đó đại diện cho chương trình đang chạy.start-stop-daemon và chương trình java

Dưới đây là một đoạn init script của tôi

#! /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 "." 
;; 

Khi tôi cố gắng để khởi động nó thông qua /etc/init.d tôi nhận được như sau:

/etc/init.d#/etc/init .d/myscript bắt đầu

bắt đầu myprogStarting/usr/bin/java ...

Detatching để bắt đầu /usr/bin/java...done.

.

Sau đó, không có java quá trình thông dịch chạy, thực hiện myprog.jar

Tôi đã thử kết hợp khác nhau của --exec, --start với ít nhiều kết quả tương tự. Nếu tôi có thể hiểu rõ hơn về những gì đang xảy ra, tôi chắc chắn rằng tôi có thể tìm ra điều này nhưng tôi không chắc chắn làm thế nào để làm điều đó.

Mọi đề xuất?

(Tôi đang chạy Angstrom trên một nền tảng ARM nhúng để Java Service Wrapper là không thực sự là một lựa chọn khả thi, tức là. Tôi không nghĩ rằng nó có sẵn cho ARM)

tôi bị mắc kẹt nên lời khuyên bất kỳ sẽ thực sự được đánh giá cao.

Cảm ơn.

+0

Tôi nên chỉ ra rằng chương trình của tôi hiện KHÔNG thực hiện giao diện Daemon. Đây có phải là yêu cầu không? – ColonelPackage

Trả lời

-4

bạn đang tìm cách chạy và có thể giám sát nó?

bạn đã thử lập trình hàng loạt dos ms chưa?

ví dụ

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

mainFile = main.java? DirectoryOfFiles = thư mục bạn có tất cả các tập tin lớp học, chỉ cần nếu chạy tập tin là cùng thư mục loại bỏ dòng

này hy vọng đây là những gì bạn đang yêu cầu cho

+0

Tôi chỉ cố gắng để có được điều để khởi động, thời gian. Tôi ít quan tâm đến việc theo dõi nó một khi tôi có thể xác nhận nó thực sự đang chạy.Nền tảng của tôi là một linux nhúng (Angstrom) vì vậy lập trình batch batch dos không phải là một lựa chọn. Nhờ đề nghị mặc dù. – ColonelPackage

14

Hai điều cần cố gắng, đầu tiên hãy thử gỡ bỏ --startas và sử dụng --exec thay vì như vậy:

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

thứ hai kể từ khi bạn đang sử dụng --background thử xác định tùy chọn --chdir, nếu bạn làm không phải là thư mục làm việc kết thúc lên được /.

Tôi đã vấp phải câu hỏi của bạn đang cố gắng giải quyết vấn đề của mình mà cuối cùng đã được giải quyết bởi --chdir, tôi tin rằng nó cũng sẽ giải quyết vấn đề của bạn.

+0

--chdir giúp tôi giải quyết vấn đề của mình, cảm ơn – Lukino

+0

Bit khó chịu nhất trong câu chuyện này là 'start-stop-daemon' nuốt tất cả đầu ra chương trình nếu không được nói cách khác –

+0

@Ivan: xem cách giải quyết này: http: // stackoverflow .com/a/21029952/400925 – Francois

Các vấn đề liên quan