2012-03-26 19 views
8

Me está costando muchísimo conseguir que un programa java se inicie correctamente en un script de inicio con start-stop-daemon. Escribí el script de inicio y parece ejecutarse, pero nunca más hay un proceso que represente el programa en ejecución.start-stop-daemon y el programa java

He aquí un fragmento de mi script de inicio

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

Cuando trato de lanzarlo a través de /etc/init.d me sale el siguiente:

/etc/init.d#/etc/init .d/miscript comenzar

partir myprogStarting/usr/bin/java ...

detatching para iniciar /usr/bin/java...done.

.

Después, no hay ningún proceso de java intérprete consecutivo, la ejecución de myprog.jar

que he probado varias combinaciones de --exec, --start con más o menos los mismos resultados. Si pudiera obtener más visibilidad sobre lo que está sucediendo, estoy seguro de que podría resolver esto, pero no estoy seguro de cómo hacer eso.

¿Alguna sugerencia?

(estoy corriendo Angstrom en una plataforma ARM incrustado modo de Java Service Wrapper no es realmente una opción viable, es decir. No creo que su disposición para ARM)

estoy atascado lo que cualquier consejo sería muy apreciado.

Gracias.

+0

Debo señalar que mi programa actualmente NO implementa la interfaz de Daemon. Es esto requerido? – ColonelPackage

Respuesta

-4

¿Está buscando una forma de ejecutar y ser capaz de controlarlo?

¿ha intentado ms batch dos programándolo todavía?

por ejemplo

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

mainFile = main.java? DirectoryOfFiles = El directorio que tiene todos los archivos de clase en, si el archivo de ejecución es mismo directorio Basta con retirar esta línea

espero que esto es lo que está pidiendo

+0

Estoy tratando de hacer que la cosa se lance, punto. Me resulta menos interesante monitorearlo una vez que puedo confirmar que se está ejecutando realmente.Mi plataforma es un Linux embebido (Angstrom) por lo que la programación de dosificación masiva no es una opción. Gracias por la sugerencia, sin embargo. – ColonelPackage

14

Dos cosas para tratar, primero intente quitar y --startas--exec utilizar en lugar de este modo:

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

En segundo lugar dado que está utilizando --background intente especificar la opción --chdir, si no lo hace el directorio de trabajo termina siendo /.

Terminé tropezando en su pregunta tratando de resolver mi problema que finalmente fue resuelto por --chdir, creo que también resolverá el suyo.

+0

--chdir ayúdame a resolver mi problema, gracias – Lukino

+0

Lo más frustrante de esta historia es que 'start-stop-daemon' se traga todo el resultado del programa si no se le dice lo contrario –

+0

@Ivan: vea esta solución alternativa: http: // stackoverflow .com/a/21029952/400925 – Francois

Cuestiones relacionadas