Avviare file jar in avvio di Linux
Mi sono fatto un piccolo server socket in Java in grado di salvare i file in arrivo (nel mio caso un log creato da un altro programma).
Il problema era l'avvio, cioè doveva avviarsi in automatico.
Non sapendo come fare mi rivolto qui e abbiamo iniziato a fare vari tentativi, che vi riporto in sequenza.
Prima ho provato a mettere semplicemente il comando dentro rc.local:
cat /etc/rc.local
#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#
#/bin/sleep 15
#/etc/rc.d/sshd start
java -jar /home/casa/server.jar
Provando poi con exec prima del comando, o & alla fine.
Purtroppo non si avviava (nessun problema però se lo avviavo manualmente).
Con zazu abbiamo fatto delle prove con le varibili d'ambiente:
env | grep java
DERBY_HOME=/opt/java/db
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/bin/vendor_perl:/usr/bin/core_perl
JAVA_HOME=/opt/java
J2SDKDIR=/opt/java
aggiungendo queste due righe prima del comando:
$(which env) | $(which grep) java > /tmp/javavars.lst
$(which env) | $(which grep) jre >> /tmp/javavars.lst
Anche così il file no nsi avviava e il file /tmp/javavars.lst rimaneva vuoto.
Ed ecco quindi la soluzione finale di zazu che ha funzionato.
Ho creato una file in /opt di nome launch_server (ovviamente mettetelo dove meglio credete), con dentro questo:
#!/bin/bash
DERBY_HOME=/opt/java/db
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/usr/bin/vendor_perl:/usr/bin/core_perl
JAVA_HOME=/opt/java
J2SDKDIR=/opt/java
java -jar /home/casa/server.jar &
Questo file l'ho poi richiamato in /etc/rc.local:
#!/bin/bash
#
# /etc/rc.local: Local multi-user startup script.
#
#/bin/sleep 15
#/etc/rc.d/sshd start
/opt/launch_server
Adesso funziona tutto:
$ ps aux | grep server
root 2864 0.0 1.1 374600 12100 ? Sl 09:22 0:03 java -jar /home/casa/server.jar
Grazie al mio forum favorito e a zazu e pennega per l'aiuto!!
java linux jar socket
Commentami!