[SCRIPT] autorun.sh - Optware Dienste starten und beenden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [SCRIPT] autorun.sh - Optware Dienste starten und beenden

    Da es einfach zu viele Missverständnisse mit der Optware gibt, habe ich dieses kleine HowTo verfasst, das mit einer "generic" autorun.sh kommt.

    Mit dieser autorun.sh ist es möglich alle Optware init.d Script's zu starten und werden später auch via der rcK.d sauber heruntergefahren rcS.d fällt weg, da wir hier alle Dienste direkt starten es würde einfach keinen Sinn ergeben.

    Wer diese autorun.sh einsetzt benötigt kein updaten der autorun.sh mehr, wenn ein Dienst hinzugefügt werden sollte. Viel eher sollten immer schön init script's verwendet werden.

    Die "generic" autorun.sh funktioniert auf jedem NAS. Greifft auch nur ein, wenn das Optware.qpkg installiert wurde.

    autorun.sh:

    Shell-Script

    1. #!/bin/sh
    2. #Determine optware directory and symlink it to /opt
    3. for optwaredirexists in `ls -d /share/* | grep "_DATA" | sort`
    4. do
    5. #optware was determined
    6. if [ -d ${optwaredirexists%/}/.qpkg/Optware ]; then
    7. OPTWARE=${optwaredirexists%/}/.qpkg/Optware
    8. #optware is already symlinked
    9. if [ -h /opt ]; then
    10. #symlinked but wrong directory
    11. if [ $(readlink "/opt") != ${OPTWARE} ]; then
    12. rm -Rf /opt
    13. ln -sf ${OPTWARE} /opt
    14. fi
    15. #optware is a directory
    16. elif [ -d /opt ]; then
    17. rm -Rf /opt
    18. ln -sf ${OPTWARE} /opt
    19. #optware does not exist
    20. else
    21. ln -sf ${OPTWARE} /opt
    22. fi
    23. fi
    24. done
    25. #execute if OPTWARE was determined
    26. if [ ! -z ${OPTWARE} ]; then
    27. #set environment variables
    28. SET_ENV_VARS="/opt/bin:/opt/sbin:/usr/local/bin:/usr/local/sbin"
    29. export PATH=$PATH:$SET_ENV_VARS
    30. echo "export PATH=$PATH" >> /etc/profile
    31. #load libs if directory exists
    32. if [ -d /opt/lib ]; then
    33. echo "/opt/lib" >> /etc/ld.so.conf
    34. /sbin/ldconfig
    35. fi
    36. #Starting Optware daemons and create shutdown rcK symlink (starting at K200)
    37. #if directory /opt/etc/init.d exists
    38. if [ -d /opt/etc/init.d ]; then
    39. #if directory is not empty
    40. if [ "$(ls -A "/opt/etc/init.d")" ]; then
    41. I=200
    42. for optdaemon in `ls /opt/etc/init.d/S* | grep -v '~' | sort`
    43. do
    44. #execute only if init script is executable
    45. if [ -x ${optdaemon} ]; then
    46. ${optdaemon} start
    47. #create symlink in rcK.d to shutdown the daemon
    48. ln -s ${OPTWARE}/etc/init.d/${optdaemon##*/} /etc/rcK.d/K${I}${optdaemon##*/}
    49. I=$(($I+1))
    50. fi
    51. done
    52. fi
    53. fi
    54. fi
    Alles anzeigen


    Init Script's:
    1) Die Init scripts werden unter dem Pfad /opt/etc/init.d erstellt.
    2) Init Script's fangen mit einem Grossen S (wie Siegfried) und einer nachfolgenden Zahl an. Ein Beispiel für das Starten von einem openSSH Dienst wäre der Dateiname: S20openssh
    3) Init script's müssen ausführbar sein. Wenn ein neues Script erstellt wird ist es nötig, chmod +x Scriptname auszuführen, damit dieses ausführbar ist.
    4) Es ist wichtig, dass das init script einen Part zum starten und beenden hat, denn nur so werden diese ordentlich gestartet und beendet.

    Hier ein einfacher Aufbau eines init script's, dass beim Booten gestartet und beim Neustarten / Herunterfahren des NAS den Dienst beenden würde. (mit der obigen autorun.sh).
    Man könnte generell diese Vorlage verwenden und in den part start() { } und stop() { } kämen die Kommandos des jeweiligen Dienstes rein.

    Vorlage eines minimalen init Script's:

    Shell-Script

    1. #!/bin/sh
    2. start()
    3. {
    4. echo "Starting "
    5. }
    6. stop()
    7. {
    8. echo "Shutting down "
    9. }
    10. # you do not need to edit this lines
    11. case "$1" in
    12. start)
    13. start
    14. ;;
    15. stop)
    16. stop
    17. ;;
    18. restart)
    19. # Restarting the Daemon
    20. $0 stop
    21. $0 start
    22. ;;
    23. *)
    24. ## If no parameters are given, print which are avaiable.
    25. echo "Usage: $0 {start|stop|restart}"
    26. exit 1
    27. ;;
    28. esac
    Alles anzeigen



    Änderung 7. Juli 2011:
    Überprüfen ob das init.d script überhaupt beim Starten und Herunterfahren ausgeführt wird.
    Man kann sich beim starten und beenden der eigenen init.d script's auch ausgeben lassen, ob das init.d script überhaupt aufgerufen wird.
    Dies machen wir hier via Logeintrag im AdminCP unter Systemprotokolle. Dabei wird nicht geprüft, ob der "Dienst", oder die Veränderungen "funktionieren", sondern lediglich geht es darum zu schauen, ob das init.d script überhaupt ausgeführt wird (start & stop). Das ganze geschieht via dem log_tool.
    Wenn man allerdings viele init.d script's hat, kann es irgendwann einfach nur "voll" in den Systemprotokoll werden. Ich empfehle es einfach nur zum testen. Danach könnte man die Zeile /sbin/log_tool..... einfach löschen (so würde wieder ruhe im Systemprotokoll einkehren).

    Wenn das NAS beim Starten das init.d script aufruft, es ein "start und stop" gibt, jedoch das was man ausführen möchte nicht ausgeführt wird, dann weiss man schon einmal, dass es am init.d script liegt.
    Hier nun die Vorlage:
    Vorlage eines init Script's mit "Log" Ausgabe im AdminCP (Starten und Beenden):
    Hier müsste die Zeile:

    Quellcode

    1. NAME="Servicename"

    geändert werden. Dafür erscheint dann im AdminCP (unter Systemprotokolle) die Ausgabe "Starting xxxxxx" und "Shutting down xxxxxx".
    Ihr beginnt mit euerem Script nach der Zeile: /sbin/log_tool (1x im start und im stop bereich).

    Shell-Script

    1. #!/bin/sh
    2. NAME="Servicename"
    3. start()
    4. {
    5. echo "Starting ${NAME}"
    6. /sbin/log_tool -a "Starting ${NAME}" -t 0 -u SYSTEM -m LOCAL
    7. }
    8. stop()
    9. {
    10. echo "Shutting down ${NAME}"
    11. /sbin/log_tool -a "Shutting down ${NAME}" -t 0 -u SYSTEM -m LOCAL
    12. }
    13. # you do not need to edit this lines
    14. case "$1" in
    15. start)
    16. start
    17. ;;
    18. stop)
    19. stop
    20. ;;
    21. restart)
    22. # Restarting the Daemon
    23. $0 stop
    24. $0 start
    25. ;;
    26. *)
    27. ## If no parameters are given, print which are avaiable.
    28. echo "Usage: $0 {start|stop|restart}"
    29. exit 1
    30. ;;
    31. esac
    Alles anzeigen



    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hi,

    hab das Thema auch mal hier mit in "Scripts und Snippets" verschoben.
    Im prinzip ist das was ich hier oben mache fast das Identische (Technisch) mit deinen, bloss, dass ich dafür nicht extra Pfade anlege, die Optware.sh patche. Das hat den Vorteil, dass es revisionssicher ist, auch wenn man das .qpkg updated.
    Ein rcS benötigt man ja eigentlich nicht wirklich um die Dienste zu starten... und die RCK's werden halt direkt als symlink beim starten angelegt.

    Lassen wir es mal bei 2 Methoden. ;)

    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Als Ergänzung zur Handhabung der "autorun.sh" :

    Im Wiki wiki.qnap.com/wiki/Autorun.sh wird erklärt wie man die "autorun.sh" anlegen und bearbeiten kann.

    Mir persönlich ist diese Methode zum öfteren Bearbeiten der "autorun.sh" zu umständlich, da bei mir nicht alles über Scripte eingebunden wird.
    Öftere Änderungen zum Testen und Einbinden anderer Programme sind bei mir nicht selten.

    Dafür nutze ich (weil es bequemer ist) zwei "autorun.sh"!

    Eine im Ramblock angelegt "autorun.sh" wie im Wiki beschrieben mit folgendem Inhalt:

    Shell-Script

    1. #!/bin/sh
    2. #sym-link /opt to /opt
    3. rm -rf /opt
    4. ln -sf /share/MD0_DATA/.qpkg/Optware /opt
    5. # Start /opt/autorun.sh
    6. /opt/autorun.sh


    und eine zweite "autorun.sh" unter /opt !
    In dieser zweiten "autorun.sh" stehen dann die Aufrufe für Scripte oder zusätzlich einzubindener Module!

    Der Vorteil:
    Nie wieder den Ramblock mounten, autorun.sh bearbeiten und dann unmount!
    Jederzeit schnelles anpassen der /opt/autorun.sh über Winscp, Putty od. ähnlich möglich!
    Man kann jederzeit mal schnell nachschauen was man in der "autorun.sh" verbockt hat, mal schnell etwas bei Bedarf auskommentieren, ect.

    Und funzt genau so zuverlässig wie mit nur einer "autorun.sh"!!

    vg kasimodo
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hi,

    da hast Du etwas falsch verstanden.... So oder so musst Du die autorun.sh 1x editieren.
    Mit der obigen autorun.sh entfällt das nachträgliche editieren der autorun.sh.
    Es gibt wirklich definitiv keinen Grund mehr an dieser etwas zu ändern. ;)

    Eine zweite würde keinen sinn ergeben, da man alles via init scripts starten kann und falls man bei "stop" etwas hinzufügt, dann werden diese auch beim neustarten, herunterfahren ordentlich beendet.

    Darum geht es in diesem Thread auch... ;) Du kannst auch mit obigen alles via winSCP oder so editieren... Lese lieber noch einmal drüber, was da oben eigentlich gemacht wird... ;)


    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    HALT !! STOP!! :D

    David, da hast du mich bzw. meinen Beitrag falsch verstanden!!! :love:

    Ich habe das mit deinem Script und dem Sinn schon gecheckt.
    TOP! :thumbsup:
    Auch habe ich selbst eine ähnliche Form davon benutzt!!

    Aber als "Bastler" da versuche ich mich immer wieder mal an den unterschiedlichsten Dingen.
    Da gibt es dann mit der Zeit eine Menge StartScripte im Verzeichnis, von denen ich dann doch nur einen Teil starten möchte.
    Auch ist der Teil in der autorun.sh zwischen dem Erstellen Symlink auf /opt und Start der Scripte bei mir noch umfangreicher und da ändere ich öfter mal etwas. (neue Kernelmodule, IPForward und so)
    Dafür ist dann die von mir beschriebenen Variante mit einer zweiten autorun.sh (für mich) schnell + einfacher zu handhaben.

    Für "nicht Bastler" -> keine Frage, da ist deine Variante optimal!

    vg kasimodo
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Jipp, da haben wir einen wurm drinnen ^^
    Oder Du machst Dir ein init script, dass S1autorun heisst :D Wäre das identische ^^ Oder lädst deine Kernelmodule via init script...
    Kannst ja alles so machen wie bisher. ;)

    Whatever. Käme auf das gleiche drauf aus ;)

    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hallo

    ich hab ein qnap 109 und möchte ushare bei einem reboot automatisch starten lassen.

    ich bin linux noob :)

    autorun.sh wie folgt geändert:

    Shell-Script

    1. #!/bin/sh
    2. #Determine Optware Directory and Symlink it to /opt if /opt does not exists
    3. for optwaredirexists in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/HDE_DATA /share/HDF_DATA /share/HDG_DATA /share/HDH_DATA /share/MD0_DATA; do
    4. if [ -d $optwaredirexists/.qpkg/Optware ]; then
    5. OPTWARE=$optwaredirexists/.qpkg/Optware
    6. if [ ! -d /opt ]; then
    7. ln -sf $OPTWARE /opt
    8. fi
    9. fi
    10. done
    11. #execute if OPTWARE was determined
    12. if [ ! -z $OPTWARE ]; then
    13. #set environment variables
    14. echo "export PATH=$PATH:/opt/bin:/opt/sbin:/usr/local/sbin" >> /etc/profile
    15. #load libs if directory exists
    16. if [ -d /opt/lib ]; then
    17. echo "/opt/lib" >> /etc/ld.so.conf
    18. /sbin/ldconfig
    19. fi
    20. #Starting Optware daemons and create shutdown rcK symlink (starting at K200)
    21. I=200
    22. for optdaemon in `ls /opt/etc/init.d/S* | grep -v '~' | sort`
    23. do
    24. ${optdaemon} start
    25. #create symlink in rcK.d to shutdown the daemon
    26. ln -s ${OPTWARE}/etc/init.d/${optdaemon##*/} /etc/rcK.d/K${I}${optdaemon##*/}
    27. I=$(($I+1))
    28. done
    29. fi
    Alles anzeigen


    unter /opt/etc/init.d

    meine S99ushare init schaut wie folgt aus:

    Shell-Script

    1. #!/bin/sh
    2. PATH=/opt/bin:/opt/sbin:/usr/sbin:/usr/bin:/sbin:/bin
    3. DAEMON=/opt/bin/ushare
    4. NAME=ushare
    5. DESC="uShare UPnP A/V Media Server"
    6. PIDFILE=/var/run/ushare.pid
    7. CONFFILE=/opt/etc/ushare.conf
    8. [ -r "$CONFFILE" ] && . $CONFFILE
    9. # abort if no executable exists
    10. [ -x $DAEMON ] || exit 0
    11. # abort if no shared directory is defined
    12. if [ -z "$USHARE_DIR" ]; then
    13. echo "Stop : No media directory specified. Edit $CONFFILE."
    14. exit 0
    15. fi
    16. set -e
    17. start()/share/HDA_DATA/.qpkg/Optware/etc/init.d/S99ushare start{
    18. if [ -f $PIDFILE ]; then
    19. echo "Warning : $PIDFILE still present. Unclean shutdown ?"
    20. kill -s 9 `cat $PIDFILE` 2>/dev/null
    21. rm -f $PIDFILE 2>/dev/null
    22. fi
    23. echo -n "Starting $DESC... "
    24. echo -n "Starting $DESC... "
    25. $DAEMON -D
    26. echo "done"
    27. }
    28. stop()/share/HDA_DATA/.qpkg/Optware/etc/init.d/S99ushare stop{
    29. echo -n "Stopping $DESC... "
    30. if [ -f $PIDFILE ]; then
    31. kill -9 `cat $PIDFILE` 2>/dev/null
    32. rm -f $PIDFILE 2>/dev/null
    33. fi
    34. echo "done"
    35. }
    36. case "$1" in
    37. start)
    38. start
    39. ;;
    40. stop)
    41. stop
    42. ;;
    43. restart)
    44. stop
    45. sleep 1
    46. start
    47. ;;
    48. *)
    49. echo "Usage: $0 (start|stop|restart)"
    50. exit 1
    51. ;;
    52. esac
    Alles anzeigen


    leider startet ushare nicht automatisch :(

    was mach ich falsch ?
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hi,

    lasse mal die autorun.sh so wie oben beschrieben.
    Die macht schon alles für Dich ;) Daran müsstest Du nie wieder Hand anlegen.

    Also nehme die von da oben (1.Post noch einmal:)
    forum.qnapclub.de/viewtopic.php?f=208&t=14277#p78297

    #########################

    Zu deinen Init script:
    Du braucht nur 1x was zum starten und 1x was zum beenden.
    2 Zeilen, die wir vom obigen Init script hinzufügen

    Quellcode

    1. /opt/bin/ushare --cfg=/opt/etc/ushare.conf --daemon
    (zum starten)
    und weil es kein "wirklichen" shutdown des Dienstes ushare gibt, wird der via killall abgeschlossen:

    Quellcode

    1. killall ushare


    So die beiden Zeilen ergänzt Du. Und dann sieht das so aus:

    Shell-Script

    1. #!/bin/sh
    2. start()
    3. {
    4. echo "Starting "
    5. /opt/bin/ushare --cfg=/opt/etc/ushare.conf --daemon
    6. }
    7. stop()
    8. {
    9. echo "Shutting down "
    10. killall ushare
    11. }
    12. # you do not need to edit this lines
    13. case "$1" in
    14. start)
    15. start
    16. ;;
    17. stop)
    18. stop
    19. ;;
    20. restart)
    21. # Restarting the Daemon
    22. $0 stop
    23. $0 start
    24. ;;
    25. *)
    26. ## If no parameters are given, print which are avaiable.
    27. echo "Usage: $0 {start|stop|restart}"
    28. exit 1
    29. ;;
    30. esac
    Alles anzeigen


    Wie gesagt, an der autorun brauchst Du nix mehr zu ändern. ;)
    Und dann kannst Du mal schauen, ob der Dienst startet, wenn Du in Deinem Falle:

    Quellcode

    1. /opt/etc/init.d/S99ushare start

    auf der Konsole eingibst und zum stoppen halt:

    Quellcode

    1. /opt/etc/init.d/S99ushare stop


    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    vorweg ich bin linux noob

    also optware läuft schon bei einem reboot.

    vorher hab ich den dienst manuell mit
    /opt/etc/init.d/S99ushare start
    gestartet.

    mein ziel war es bei einem reboot das dieser dienst automatisch startet
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hallo David,

    habe mal paar Verständnisfragen:

    Die Ordner init.d und rcK.d sind auf meinem NAS unter /opt/etc nicht vorhanden. Diese beiden somit von Hand anlegen, oder?
    Soweit ich dein Script verstehe, so werden die Init Script's damit automatisch beim hochfahren gestartet und gleichzeitig in den Ordner rcK.d ein Symlink zum stoppen angelegt.
    Aber woher weiß das NAS dann, dass es beim runterfahren in diesen Ordner schauen soll und die stop Befehle mit den Scripts ausführen soll?
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Die Ordner init.d und rcK.d sind auf meinem NAS unter /opt/etc nicht vorhanden.

    Richtig. Es wird nur der Pfad /opt/etc/init.d benötigt.
    Einige Dienste aus der optware kommen schon direkt mit init.d script's. z.B. openvpn.
    Dabei wird dann auch der Pfad /opt/etc/init.d erstellt.
    Hat man jetzt aus der Optware einen Dienst / oder möchte etwas starten was nicht mit einem init.d script kommt, so kann man den Pfad /opt/etc/init.d und das Init Script anhand der Vorlage (kiss keep it small and simple) erstellen.
    Das rcK.d und rcS.d Verzeichnis wird nicht benötigt.

    Diese beiden somit von Hand anlegen, oder?

    Nein. Wird nicht benötigt. ;) (rcK.d und rcS.d Verzeichnis wird nicht benötigt.)
    Nur eben den /opt/etc/init.d Pfad.

    Aber woher weiß das NAS dann, dass es beim runterfahren in diesen Ordner schauen soll und die stop Befehle mit den Scripts ausführen soll?

    Die autorun.sh startet Dir alles was im /opt/etc/init.d/ liegt (und halt mit einem S anfängt).
    Wenn ein Init Script gestartet wird, dann wird auch direkt ein Symlink zu für den Systemeigenen Shutdown erstellt.
    Das heisst, alle Init Scripts in /opt/etc/init.d/S* werden gestartet und ein Symlink für den Shutdown in /etc/rcK.d/ erstellt.
    Damit sich da auch nix überschneidet wird der Symlink in /etc/rcK.d/ mit den Prefix K(zahl)(scriptname) erstellt.
    Somit benötigt man deshalb nix anderes ausser das init.d script. Die autorun macht den rest.

    Im "Realen leben" (ohne Optware) liegen alle init.d Script's auch nur im init.d und es wird lediglich von den Pfaden etc/rcK.d/ und etc/rcS.d/ auf die init.d script's gesymlinkt. Diese Script's werden dann auch nur mit den Parameter start|stop aufgerufen. Hier würde halt der Start etc/rcS.d/ wegfallen, da wir alles mit schon in der autorun.sh verarbeiten. (scriptname start) und für den shutdown wird halt ein symlink angelegt, der vom NAs dann mit (scriptname stop) ausgeführt wird.

    Ebendrum: keep it small and simple (dann verwirrt's auch nicht)
    Im Englischen Forum haben auch schon so einige die autorun.sh laufen :D

    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    So.

    Ich habe noch einen kleinen Bug in der autorun.sh gefunden und im 1. Post korrigiert und dazu noch ein paar "Schönheitskorrekturen" vorgenommen.
    forum.qnapclub.de/viewtopic.php?f=208&t=14277#p78297

    Ändern tut sich also nix, ausser dass es jetzt auf allen NAS funktioniert ;)
    @aval_anche: Das könnte auch Dein Problem gewesen sein. Es kam vor, dass /opt schon symlinked oder nicht symlinked war und /opt einfach ein "default" path war. Jetzt sollte es funktionieren. ;)

    Grüsse, David
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    Hi, also ich dreh noch mal durch mit diesen autostarts. Ich kapier es einfach nicht. Nachdem du mir ja im anderen Thread (forum.qnapclub.de/viewtopic.php?f=33&t=15056) den Tipp mit dieser autostart.sh gegeben hast, wollte ich es doch noch mal ausprobieren. Aber es klappt einfach nicht. Das dubiose ist, wenn ich die autostart.sh gemountet lasse und in /tmp/config mit ./autostart.sh die Datei teste, wird Pyload gestartet. Um jeden Fehler, den ich gemacht haben könnte auszuschließen, hier mal wie ich vorgegangen bin:

    Gemountet (TS-210):
    mount -t ext2 /dev/mtdblock5 /tmp/config

    autorun.sh zum editieren geöffnet:
    vi /tmp/config/autorun.sh

    Dein Script von Seite 1 eingetragen:

    Shell-Script

    1. #!/bin/sh
    2. #Determine Optware Directory and Symlink it to /opt if /opt does not exists
    3. for optwaredirexists in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/HDE_DATA /share/HDF_DATA /share/HDG_DATA /share/HDH_DATA /share/MD0_DATA /share/MD1_DATA /share/MD2_DATA /share/MD3_DATA; do
    4. if [ -d $optwaredirexists/.qpkg/Optware ]; then
    5. OPTWARE=$optwaredirexists/.qpkg/Optware
    6. #check if optware is already symlinked
    7. if [ ! -h /opt ]; then
    8. #if not but determined delete /opt if exist and symlink to optware
    9. if [ -d /opt ]; then
    10. rm -rf /opt
    11. fi
    12. ln -sf $OPTWARE /opt
    13. fi
    14. fi
    15. done
    16. #execute if OPTWARE was determined
    17. if [ ! -z $OPTWARE ]; then
    18. #set environment variables
    19. echo "export PATH=$PATH:/opt/bin:/opt/sbin:/usr/local/sbin" >> /etc/profile
    20. #load libs if directory exists
    21. if [ -d /opt/lib ]; then
    22. echo "/opt/lib" >> /etc/ld.so.conf
    23. /sbin/ldconfig
    24. fi
    25. #Starting Optware daemons and create shutdown rcK symlink (starting at K200)
    26. #if directory /opt/etc/init.d exists
    27. if [ -d /opt/etc/init.d ]; then
    28. #if directory is not empty
    29. if [ "$(ls -A "/opt/etc/init.d")" ]; then
    30. I=200
    31. for optdaemon in `ls /opt/etc/init.d/S* | grep -v '~' | sort`
    32. do
    33. #execute only if init script is executable
    34. if [ -x ${optdaemon} ]; then
    35. ${optdaemon} start
    36. #create symlink in rcK.d to shutdown the daemon
    37. ln -s ${OPTWARE}/etc/init.d/${optdaemon##*/} /etc/rcK.d/K${I}${optdaemon##*/}
    38. I=$(($I+1))
    39. fi
    40. done
    41. fi
    42. fi
    43. fi
    Alles anzeigen


    Ausführbar gemacht:
    chmod +x /tmp/config/autorun.sh

    Unmountet:
    umount /tmp/config


    Dann ins init.d Verzeichnis gewechselt:
    cd /opt/etc/init.d

    S20pyload.sh erstellt:
    nano S20pyload.sh

    Dein Script eingetragen:

    Shell-Script

    1. #!/bin/sh
    2. start()
    3. {
    4. echo "Starting "
    5. /opt/pyload/pyLoadCore.py --daemon
    6. }
    7. stop()
    8. {
    9. echo "Shutting down "
    10. /opt/pyload/pyLoadCore.py --quit
    11. }
    12. # you do not need to edit this lines
    13. case "$1" in
    14. start)
    15. start
    16. ;;
    17. stop)
    18. stop
    19. ;;
    20. restart)
    21. # Restarting the Daemon
    22. $0 stop
    23. $0 start
    24. ;;
    25. *)
    26. ## If no parameters are given, print which are avaiable.
    27. echo "Usage: $0 {start|stop|restart}"
    28. exit 1
    29. ;;
    30. esac
    Alles anzeigen


    Ausführbar gemacht:
    chmod +x /opt/etc/init.d/S20pyload.sh


    Warum funktioniert das nicht???? :( Ich verzweifel hier echt noch :(

    Wie gesagt, ich habe dann noch mal die autostart.sh gemountet:

    mount -t ext2 /dev/mtdblock5 /tmp/config

    Bin ins Verzeichnis
    cd /tmp/config

    und habe die autostart.sh von Hand ausgeführt:
    ./autostart.sh

    und dann startet Pyload. Also stimmt doch alles mit den Scripts? Aber warum startet Pyload nicht nach einem Neustart von QNAP?

    Bitte helft mir, ich dreh hier noch durch.
    Danke
  • Re: [SCRIPT] autorun.sh - Optware Dienste starten und beende

    "Terz" schrieb:

    So.

    Ich habe noch einen kleinen Bug in der autorun.sh gefunden und im 1. Post korrigiert und dazu noch ein paar "Schönheitskorrekturen" vorgenommen.
    forum.qnapclub.de/viewtopic.php?f=208&t=14277#p78297

    Ändern tut sich also nix, ausser dass es jetzt auf allen NAS funktioniert ;)
    @aval_anche: Das könnte auch Dein Problem gewesen sein. Es kam vor, dass /opt schon symlinked oder nicht symlinked war und /opt einfach ein "default" path war. Jetzt sollte es funktionieren. ;)

    Grüsse, David


    hi Terz,

    ja mit der änderung läuft es perfekt. ushare startet endlich automatisch :)

    mfg

    aval_anche