Jar-File automatisiert starten

Status
Für weitere Antworten geschlossen.

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,
da ich mich leider nicht gut mit der Bash auskenne hier meine Frage:

Automatisiert möchte ich gerne ein jarfile starten. Dieses befindet sich unter volume1/homes/user/

hierzu hatte ich schon diverse Anläufe unternommen ein sh sript zu erstellen. Allerdings findet er entweder den Pfad nicht oder führt das jarfile einfach nicht aus. Des weiteren würde ich gerne wissen wo dieses sh script hinterlegt werden muss.

Konkret brauche also Hilfe beim Erstellen eines Srcipts welches mir das Jar file startet und wo ich dieses hinterlegen muss. Auf der NAS ist Java8 installiert.

Ich hoffe Ihr könnt mir hier helfen.

Besten Dank bereits im Voraus.

Viele Grüße
Markus
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Wenn du mal dokumentierst, was du probiert hast, kann man vielleicht eher sagen, woran es gescheitert ist.
Und vielleicht noch ein wenig zu den Randbedingungen um was es für ein jar geht, vielleicht gibt es schon Lösungen dafür.

Ansonsten hätte ich gesagt würde es ausreichen via Aufgabenplaner in der Systemsteuerung einen Befehl abzusetzen.
 

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo Fusion, vielen Dank für deine Antwort. Ich versuche das mal zu beschreiben. Bei dem jar handelt es sich um einen bot der zu einem discord Server verbindet. Mit diesem Bot kann dort dann in den voice channels z.B. Musik abgespielt werden.
Das jar startet keine GUI sonder läuft lediglich in der console. Über putty kann ich das jar normal mit java -jar bot.jar starten. Wenn ich Putty dann schließe ist die Session klar beendet. Mein Ziel ist es beim Start der Nas auch das jar zu starten.

Auszug aus der Putty Console:

Leto@NAS-Synology:~$ java -jar ucbot.jar
[13:03:37] [Info] [FileIO]: Bot-Token Dateizugriff erfolgreich!
[13:03:37] [Info] [initBot]: Versuche zum Server zu verbinden!
[13:03:37] [Info] [ChatCommands]: ChatCommands werden geladen!
[13:03:51] [Info] [JDA]: Login Successful!
[13:03:54] [Info] [JDASocket]: Connected to WebSocket
[13:03:55] [Info] [JDA]: Finished Loading!


Hierzu habe ich mehrere Ansätze mit einem sh script ausprobiert. Diese scheiterten aber dann immer in folgenden Fehlermeldungen:

1. Wenn ich den Pfad drin hatte: konnte er diesen nicht erkennen.
#!/bin/sh
cd /volume1/homes/Leto/
java -jar ucbot.jar

Hier meckert er schon am Pfad und sagt das jar file nicht accessed werden kann. Beide Files befinden sich aktuell im selben Verzeichnis. Über putty habe ich das mit sh ucbot.sh aufgerufen.

Also mein erstes Problem ist. Wie muss das sh geschrieben sein, dass es überhaupt schonmal über putty startet. Wenn das geschafft ist interessiert mich wie ich das automatisiert hinbekomme.

Ich hoffe die Angaben helfen.

Viele Grüße
Markus
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Leto ist dein Benutzer mit Admin Rechten, oder ein normaler Benutzer?

Via Konsole kann man sich auch überlegen Richtung screen, dtach, terminator zu gehen (muss man halt eventuell nachinstallieren). Da hat man dann SSH Sessions die auch nach Abmeldung weiterlaufen.

Richtung GUI würde ich das gerade erstmal von hinten anfangen.
Systemsteuerung > Aufgabenplaner > Erstellen, benutzerdefiniertes Script
Namen und Nutzer definieren unter dem es laufen soll und im dritten Reiter Aufgabeneinstellungen oder ähnlich unter Run Command / Befehl ausführen
java -jar /volumes1/homes/Leto/ucbot.jar
Mal schauen ob das vielleicht schon läuft.
 

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Leto ist ein Nutzer in der Admin Gruppe. Ich habe das jetzt mal so wie beschrieben eingetragen. Einmal unter geplante Aufgaben und ein zweites mal unter "Ausgelöste Aufgabe"
Allerdings wird es nicht gestartet.

Im Ereignisprotokoll kommt lediglich unterbrochen(127). Hab das eben auch mal mit dem root user probiert. Ebenfalls startet es dann nicht.Hier erscheint aber unter aktuellem Status nur (0)

Habe jetzt auch mal folgendes im script umgestellt um das mal zu testen:
#!/bin/sh
java -jar /volumes1/homes/Leto/ucbot.jar

Meldung:
unable to access jarfile /volumes1/homes/Leto/ucbot.jar
 
Zuletzt bearbeitet:

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Eventuell mal /var/services/homes/Leto/ucbot.jar probieren.

Also nochmal.
Per Putty eingeloggt als Leto und ausführen im Home-Verzeichnis geht, korrekt?

Dann kann es ja eigentlich nur am PATH oder an Zugriffsrechten scheitern.
Auch mal mit which java den Pfad zu Java rausbekommen und den Befehl dann mit vollständigen Pfaden ala /usr/bin/java -jar /var/services/homes/Leto/ucbot.jar versuchen.
 

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
ja per putty im Leto Verzeichnis kann ich das jar ausführen.

Habe über den Aufgabenplaner nun diese Varianten probiert:
1. /var/packages/Java8/target/j2sdk-image/bin/java -jar /volume1/homes/Leto/ucbot.jar
2. /var/packages/Java8/target/j2sdk-image/bin/java -jar /var/services/homes/Leto/ucbot.jar

startet beides nicht.

Ich habe auf den Kompletten homes Ordner von den Berechtigungen Lese und Schreibrechte. So wie man es über die Synology Oberfläche einstellen kann. Zusätzlich ist der User Leto in der admin Gruppe.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Bekommst du Hinweise, wenn du das nicht in deinem Home Verzeichnis machst in putty sondern z.B. direkt mal auf der Wurzel
also
cd /
java -jar /volume1/homes/Leto/ucbot.jar
?

P.S. tut mir leid, dass die Hinweise gerade so oberflächlich sind. Bin gerade durch etwas anderes genervt und kann mich nicht richtig konzentrieren.
 

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Das ist absolut kein Problem. Bin froh wenn Du hilfst. Und wenn Du länger brauchst macht mir das gar nix aus.

Ja tatsächlich findet er auf der Wurzel das Verzeichnis der Textfiles nicht wo unter anderem das Token drin steht:

Putty:

[14:24:08] [Info] [FileIO]: Bot-Token Datei kann nicht gelesen werden!
java.io.FileNotFoundException: ./resnlogs/bottoken.txt (No such file or directory)

Mehr ist es allerdings nicht. Wenn ich mir das von den Berechtigungen ansehe ist aber Leto der Besitzer
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Dann scheint das Programm ja relative Pfade zu nutzen.

Im Aufgabenplaner kannst du auch mehrere Zeilen als Befehl eintragen, alsod vielleicht doch mal ala
cd /pfad/zu/jar
java jar
probieren
 

mpflugi

Benutzer
Mitglied seit
29. Dez 2016
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
warum auch immer funktioniert das nicht. Aber egal ich will dich jetzt nicht weiter abhalten. Mach erstmal deine Sachen fertig. Für den Übergang nutze ich nohup bei putty. Ist zwar nicht schön wegen reboot und eventuell geht se dennoch in sleep.
Aber temporär werde ich das jetzt mal probieren.
Das jar nutzt nur das eine Verzeichnis das ich ebenfalls in homes/Leto befindet. Warum der das nicht starten will versteh ich jetzt einfach nicht. Aber vielleicht bringen ja die nächsten Tage die Erleuchtung und Dir fällt vielleicht noch was ein :)
Erstmal möchte ich mich für Deine Zeit bedanken. Ich wünsch Dir einen guten Rutsch ins neue Jahr. *ärger Dich nicht mehr ewig mit der anderen Aufgabe rum*

Viele Grüße
Markus
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat