Start / Stop Script S99mount.sh geht nicht

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

mkottke1

Benutzer
Registriert
07. Feb. 2010
Beiträge
30
Reaktionspunkte
0
Punkte
0
Hallo.

Ich habe das S99mount.sh script zum einbinden von medienverzeichnisse im ordner /usr/local/etc/rc.d eingebunden.
Da ich einen sehr langen Startvorgang habe, bin ich im Forum auf die Suche gegangen. Der Grund ist der Filecheck.

Da das Script auch ein umount machen soll, und ich trotzdem den filecheck habe, bin ich her gegangen, und habe ein logging eingebunden. Dabei ist mir aufgefallen, dass mein Script beim herunterfahren der DS209+ii nicht aufgerufen wird.

Gestartet wird es normal, aber aufruf mit stop kommt nie. wenn ich das script händisch von der shell mit stop aufrufe, bekomme ich keinen filecheck.

Jetzt meine Frage. In welchem Ordner sollte das scripte nun liegen. Ich habe hier verschiedene Möglichkeiten gefunden. Mal in /usr/syno/etc.defaults/rc.d oder auch wo ich es jetzt habe in /usr/local/etc/rc.d.....

danke für die hilfe
 
Normalerweise liegen sie Start/Stop Skripte in /usr/syno/etc.defaults/rc.d oder in /op/etc/init.d
 
Habe das script nun nach /usr/syno/etc.defaults/rc.d verschoben. Gleiches Problem wie vorher. Das Script wird beim booten angesprungen mit der Option Start, aber beim shutdown nicht. Das Logfile zeichnet kein Aufruf mit Stop oder anderen Parameter auf.
Ich habe so das Gefühl, dass durch andere umount Befehle von der Systemseite her, die Verzeichnisstruktur nicht mehr existiert...


Gibt es unter linux auch eine logfunktion (ähnlich die beim booten) fürs herunterfahren? Kann man dort erkennen, welche scripte überhaupt aufgerufen werden?


Hier mein Start / Stop Script

#!bin/sh
# mount/bind some folders on startup
# and umount them on shutdown/reboot

case $1 in
start)
echo `date "+%d.%m.%Y %H:%M:%S"` "Start" >> /usr/local/etc/rc.d/log.log
/bin/mount -o bind /volume1/public/bilder/ /volume1/photo/ 2>> /usr/local/etc/rc.d/log.log
/bin/mount -o bind /volume1/public/music/ /volume1/music/ 2>> /usr/local/etc/rc.d/log.log
/bin/mount -o bind /volume1/public/videos/ /volume1/video/ 2>> /usr/local/etc/rc.d/log.log
mount 2>> /usr/local/etc/rc.d/log.log
echo `date "+%d.%m.%Y %H:%M:%S"` "Ende mount" >> /usr/local/etc/rc.d/log.log
;;
stop)
echo `date "+%d.%m.%Y %H:%M:%S"` "Stop" >> /usr/local/etc/rc.d/log.log
/bin/umount /volume1/photo/ 2>> /usr/local/etc/rc.d/log.log
/bin/umount /volume1/music/ 2>> /usr/local/etc/rc.d/log.log
/bin/umount /volume1/video/ 2>> /usr/local/etc/rc.d/log.log
mount 2>> /usr/local/etc/rc.d/log.log
echo `date "+%d.%m.%Y %H:%M:%S"` "Ende umount" >> /usr/local/etc/rc.d/log.log
;;
*)
echo "Usages: $0 [start|stop]" 2>> /usr/local/etc/rc.d/log.log
;;
esac


hoffe auf hilfe.
Möglicherweise kann jemand mal bei sich das script einbinden, und meine Beobachtungen testen.
Ich habe im übrigen kein ikpg oder optware installiert...
Handelt es bei der Antwort /op/... um einen Tippfehler? Muss das nicht /opt/... heißen? Aber egal. Einen Ordner /opt/ oder /op/ habe ich nicht.
 
Die Ursprüngliche Version von dem Script ist von mir - und bei mir funktioniert es wie gewünscht. Ich habe es übrigens in "/usr/syno/etc.defaults/rc.d" liegen.

gruss
dude
 
Welche routine sorgt denn dafür, dass das script überhaupt angesprungen wird. Es liegt ja einfach nur im Ordner. Das Starten klappt ja auch prima. Die Verzeichnisse werden gemountet.
Aber es wird beim herunterfahren nicht angesprungen.
Kann mir jemand sagen, welche schritte bei linux anlaufen, wenn man den befehl reboot eingibt?
Dann muss ja mein script als erstes aufgerufen werden, bevor andere scripte etwas mit dem system anstellen. Wie schon geschrieben. Wenn ich das script von der shell mit dem Parameter stop aufrufe, wird korrekt umount verarbeitet.
Dann der befehl reboot eingeben, und die DS ist binnen weniger sekunden wieder oben.
Also noch mal die Frage. Welche routinen/scripte... kommen beim herunterfahren zum tragen. Und in welcher reihenfolge. Kann ich mein script möglicherweise dahin kopieren, wo die systemscripte liegen? Ich vermute mal, wenn ich den Namen ändere von S99 auf S00, dann ist es auf Grund alphabetischer Sortierung höher priorisiert.
Ich habe auch kein Problem, zwei scripte zu schreiben. Eines für den Start und eines für den Stop.

Ich freue mich über lösungen...
 
Hallo,
Du darfst die DS nicht per reboot Befehl neu starten. Entweder per DSM neu starten oder per Taster ausschalten oder poweroff auf der Kommandozeile eingeben.

Gruß Götz
 
Danke für die Info mit dem Befehl reboot
Ich habe aber ebenfalls mit dem Webbrowser über den Port 5000 auf meine DS zugegriffen. Bin nämlich nicht zu hause. Aber via DDNS geht das ja prima. Dort kann ich oben rechts in der Ecke den Befehl herunterfahren und dann neustarten auswählen. Ist damit gemeint per DSM neustarten? Das habe ich auch schon mehrfach versucht. Gleiches Ergebnis. Filecheck beim boot, weil die Verzeichnisse vermutlich nicht unmountet wurden...


noch irgendwelche ideen?
 
Ich weiss nicht ob dies der Grund sein könnte, aber in deinem Code steht der Pfad zur Shell falsch mit #!bin/sh und nicht mit #!/bin/sh
Kriegst du denn die mounts mit einem manuellen umount sauber weg?
Und ja mein /op war ein Vertipper und sollte /opt heissen :), was aber bei dir eh keine Rolle spielt, da du ipkg ja nicht installiert hast
 
Leute, mein Problem ist gelöst...
Es lag tatsächlich an der ersten Zeile vom Script.
#!bin/sh und nicht mit #!/bin/sh
Ich hatte eigentlich gedacht, dass alles was mit # eingeleitet wird ein kommentar ist. Ich hab die ersten Zeilen gar nicht für voll genommen.
Jetzt weiß ich auch, warum mein script von der shell immer nur mit dem befehl sh ./S99mount.sh Start/Stop laufen wollte.
Ohne sh ging es nie.

Danke allen Denkern für eure Hilfe...
 
Ich habe eben auf die aktuelle Firmware aktualisiert, seitdem funktioniert mein Script nicht mehr. :(

Es scheint nicht mehr aufgerufen zu werden, denn beide Logs werden nicht geschrieben.

Ich habe folgendes Script:

Rich (BBCode):
#!/bin/sh
# S99mount.sh
# mount/bind some folders on startup
# and umount them on shutdown/reboot

case $1 in
start)
        /bin/mount -o bind /volume1/homes/christian/Backup/Pictures/DCIM/ /volume1/photo/Christian/
        /bin/mount -o bind /volume1/@download/aMuleTmp/ /volume1/xchange/_emule/
        mount 2>> /usr/local/etc/rc.d/log.log
        echo `date "+%d.%m.%Y %H:%M:%S"` "Ende mount" >> /usr/local/etc/rc.d/log.log
        echo S99 >>/var/log/mount_log
        ;;
stop)
        /bin/umount /volume1/photo/Christian/
        /bin/umount /volume1/xchange/_emule/
        mount 2>> /usr/local/etc/rc.d/log.log
        echo `date "+%d.%m.%Y %H:%M:%S"` "Ende mount" >> /usr/local/etc/rc.d/log.log
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac

in "/usr/syno/etc.defaults/rc.d" liegen.
 
Hallo zusammen,

ich habe gestern auf die Firmware 3..2-1922 aktualisiert.

Bis dahin Funktionierte mein Mount Script welches bis dato in /usr/local/etc/rc.d/S96ownmount.sh lag ohne Probleme.

Hat wer eine Idee warum es nicht mehr angesprochen wird oder wo es ggf jetzt hin muss damit es wieder Funktioniert?

Ich bin leider seid längerem nicht mehr im Thema da mein Nas wie gewünscht Funktionierte.

Script sieht so aus:

Rich (BBCode):
#!/bin/sh
/bin/sleep 10

case $1 in
start)
/bin/mount -o bind /volume3/Movies/ /volume1/video/Movies/
/bin/mount -o bind /volume2/Serien/ /volume1/video/Serien/A-M/
/bin/mount -o bind /volume1/Serien2/ /volume1/video/Serien/N-Z/
/bin/mount -o bind /volume1/Dokus/ /volume1/video/Dokus
/bin/mount -o bind /volume3/Fotos/ /volume1/photo/Fotos/
/bin/mount -o bind /volume3/MP3/ /volume1/music/MP3/

;;
stop)
/bin/umount /volume1/video/Movies/
/bin/umount /volume1/video/Serien/A-M/
/bin/umount /volume1/video/Serien/N-Z/
/bin/umount /volume1/video/Dokus/
/bin/umount /volume1/photo/Fotos/
/bin/umount /volume1/music/MP3/
/bin/umount /volume1/root/
;;
*)
echo "Usages: $0 [start|stop]"
;;

Besten Dank und Gruß
 
Das Script ist nach einem Firmware-Update nicht mehr vorhanden, wenn es unter /usr/local/etc/rc.d/ gesichert ist.
Du mußt das Script also erneut auf der DS ablegen.
 
Hallo,
/usr/local wird zwar gelöscht, jedoch wird es vor dem Upgrade gesichert und danach zurück gespielt, der Inhalt bleibt also.
Aus /etc/upgrade.sh
Rich (BBCode):
BackupDirList="/etc /usr/syno/etc /var /usr/syno/synoman/webman/3rdparty /usr/local /root/.ssh"

Gruß Götz
 
Hallo Zusammen

hat jemand ne Lösung, für das Problem unter DSM 3.2?
Hab auch das Update gemacht, und das Script läuft nicht mehr.

Wenn ich es über Telnet manuell ausführe kommt folgender Error:

Rich (BBCode):
DiskStation> sh S99mount.sh start
: not found: line 5:
S99mount.sh: line 6: syntax error: unexpected word (expecting "in")
DiskStation>
 
S99mount.sh: line 6: syntax error: unexpected word (expecting "in")
das klingt nach einem Synthaxfehler und der hat eigentlich nichts mit der Problemstellung des Threads zu tun. Guck dir mal in deinem Code Zeile 6 an (und ggf zurück bis zum Anfang). Irgendwo fehlt dort ein Zeichen
 
dacht ich mir schon, hab da aber keinen Fehler gefunden.

so sieht mein Script jetzt aus:

Rich (BBCode):
#!/bin/sh
# S99mount.sh
# mount/bind some folders on startup
# and umount them on shutdown/reboot

case $1 in
start)
        /bin/mount -o bind /volume1/Fileserv/Musik/ /volume1/music/
        /bin/mount -o bind /volume1/Fileserv/Filme/ /volume1/video/
        ;;
stop)
        /bin/umount /volume1/music/
        /bin/umount /volume1/video/
        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac
 
Der Code schaut eigentlich gut aus. Ich sehe auf jeden Fall nichts. Hast du das Script etwa auf einem Windows oder Mac geschrieben und dann auf die DS kopiert? Wenn ja dann prüf mal die Zeilenenden direkt auf der DS mit dem Editor vi. Wenn der ^M am Ende der Zeilen zeigt, dann liegt es an falschen Zeilenenden
 
ja ich habs auf einem Windows PC geschrieben, und dann via telnet auf die DS kopiert.
im vi zeigt es mir am ende jeder zeile (bis auf die letzte zeile "esac") das ^M an.

Rich (BBCode):
#!/bin/sh^M
# S99mount.sh^M
# mount/bind some folders on startup^M
# and umount them on shutdown/reboot^M
^M
case $1 in^M
start)^M
        /bin/mount -o bind /volume1/Fileserv/Musik/ /volume1/music/^M
        /bin/mount -o bind /volume1/Fileserv/Filme/ /volume1/video/^M
        ;;^M
stop)^M
        /bin/umount /volume1/music/^M
        /bin/umount /volume1/video/^M
        ;;^M
*)^M
        echo "Usage: $0 [start|stop]"^M
        ;;^M
esac
 
da hast du den Fehler :-) ^M sind für Linux keine korrekten Zeilenenden. Passiert oft wenn du Dateien auf Win/Mac bearbeitest und dann auf die DS lädst. Für Windows müsstest du einen Editor verwenden, der explizit mit Unix-Zeilenenden umgehen kann (notepad++ kann das)
 
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