Autorun funktioniert nicht, obwohl Skripte über Putty funktionieren

  • Hallo zusammen,


    ich möchte, dass auf meiner TS-251+ beim Start ein Skript ausgeführt wird. Dazu habe ich wie unter


    https://wiki.qnap.com/wiki/Run…wn_Application_at_Startup


    beschrieben bereits die Datei 'autorun.sh' mit folgendem Inhalt angelegt:


    Bash
    #!/bin/sh
    /share/CACHEDEV1_DATA/skripte/start.sh

    Wie erkennbar ist, ruft die 'autorun.sh' mein Skript 'start.sh' im Ordner /share/CACHEDEV1_DATA/skripte auf.


    Beide Skripte (autorun.sh sowie start.sh) starten fehlerfrei, sofern ich diese über Putty starte. Der Inhalt der 'autorun.sh' wird auch im QTS unter Hardware --> Inhalt von autorun.sh korrekt angezeigt.


    Wenn ich das NAS allerdings neu starte, erfolgt kein automatischer Start meines Skriptes 'start.sh'. Woran kann das liegen ?


    Meine Vermutung ist, dass zu dem Zeitpunkt, an dem die Datei 'start.sh' ausgeführt werden soll, der Ordner /share/CACHEDEV1_DATA/skripte noch nicht im Dateisystem vorhanden / eingebunden ist und somit auch die Datei 'start.sh' nicht gefunden werden kann.


    Hat jemand einen Tipp für mich, wie man das Problem gelöst bekommt ? Vielleicht noch als Hinweis, ich habe keine zusätzlichen Pakete aus dem APP-Store installiert. Müsste ich da noch etwas nachinstallieren ?


    Besten Dank für Eure Hilfe
    Fraubi

  • Hast du in deiner start.sh Datei alle Befehle und Dateien mit ihrem vollem Pfad angegeben?


    Das ist einer der häufigsten Fehler, weshalb es nicht funktioniert.

  • Das könnte vermutlich die Lösung sein, allerdings bräuchte ich dann doch noch etwas weitergehende Hilfe.
    Ich versuche, Subsonic auf der QNAP zum laufen zu bringen. Wenn ich das Startskript über Putty ausführe, dann läuft es.
    Im App-Center habe ich JAVA (JRE 8.144.1) installiert (habe ich in meinem ersten Posting vergessen extra zu erwähnen).


    Demnach müsste ich das Startskript so anpassen, dass der Pfad für JAVA vollständig im Skript enthalten ist. Doch an dieser Stelle scheitere ich mit meinem Wissen.


    Das Skript sieht insgesamt so aus (ist nicht von mir, sondern habe ich von meinem Synology-NAS zweckentfremdet).



    Der dafür wesentliche Teil steht vermutlich in Zeile 90 bis 95. In diesem Bereich müsste ich den Pfad zu JAVA hinterlegen. Dieser ist bei mir wohl


    /share/CACHEDEV1_DATA/.qpkg/JRE/jre/bin


    Hat jemand eine Idee, wie ich es anfangen kann. Es ist echt ärgerlich, dass alles läuft, nur der Autostart des Skriptes scheitert.


    Besten Dank für jede Hilfe
    Fraubi

  • Also so weit ich weiß greift Linux cronjobs generell nicht auf diese Umgebungsvariablen zu, deshalb muss man immer den vollen Pfad angeben.


    Da dein Script schon so schön gestaltet ist, würde ich den Pfad eben oben einfach selbst noch mal als Variable definieren, damit du an deinem restlichen Script nichts ändern musst.

  • Das Skript habe ich mal irgendwann von irgendwo bekommen, es selbst ein wenig angepasst, und seither lief es auf meinem Synology-NAS.


    Jetzt wollte ich es auf mein neues QNAP-NAS portieren, komme aber mit der Syntax zur Einbindung des Pfades nicht klar.


    Kannst Du helfen ???


    Gruß und danke
    Fraubi

  • Ich würde ganz oben


    JAVA_HOME = /share/CACHEDEV1_DATA/.qpkg/JRE/jre/bin


    einfügen, sofern der Pfad stimmt. Den habe ich jetzt nicht geprüft.


    Und da die schreibweise JAVA_HOME eigentlich als Umgebungsvariable definiert ist, was sie hier dann aber nicht ist, würde ich mir überlegen, ob ich den teil komplett klein schreibe.


    Das muss dann aber im ganzen Script passieren.

  • Muss dieser Teil im Skript dann nicht weg / geändert werden, denn spätestens in Zeile 5 würde es dann ja nicht mehr passen....


    Code
    # Use JAVA_HOME if set, otherwise assume java is in the path.
    JAVA=java
    if [ -e "${JAVA_HOME}" ]
        then
        JAVA=${JAVA_HOME}/bin/java
    fi
  • So, das Problem wäre gelöst. Nun startet das Skript beim Autostart der QNAP.
    Folgende Änderungen habe ich hinsichtlich des Pfades gemacht:



    Bash
    # Use JAVA_HOME if set, otherwise assume java is in the path.
    JAVA=java
    JAVA=/share/CACHEDEV1_DATA/.qpkg/JRE/jre/bin/java

    Jetzt kämpfe ich noch damit, dass Subsonic Probleme mit Dateinamen hat, die Umlaute enthalten. Mal sehen ob ich es hinbekomme.


    Besten Dank für Deine Hilfe
    Fraubi