Start / Stop Script S99mount.sh geht nicht

Status
Für weitere Antworten geschlossen.

mkottke1

Benutzer
Mitglied seit
07. Feb 2010
Beiträge
30
Punkte für Reaktionen
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Normalerweise liegen sie Start/Stop Skripte in /usr/syno/etc.defaults/rc.d oder in /op/etc/init.d
 

mkottke1

Benutzer
Mitglied seit
07. Feb 2010
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
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.
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
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
 

mkottke1

Benutzer
Mitglied seit
07. Feb 2010
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
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...
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
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
 

mkottke1

Benutzer
Mitglied seit
07. Feb 2010
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
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?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0

mkottke1

Benutzer
Mitglied seit
07. Feb 2010
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
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...
 

Christian72D

Benutzer
Mitglied seit
29. Apr 2010
Beiträge
715
Punkte für Reaktionen
12
Punkte
44
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.
 

Nacho

Benutzer
Mitglied seit
06. Nov 2008
Beiträge
47
Punkte für Reaktionen
0
Punkte
0
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ß
 

bohne

Benutzer
Mitglied seit
05. Jan 2011
Beiträge
1.701
Punkte für Reaktionen
3
Punkte
58
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.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.015
Punkte für Reaktionen
271
Punkte
393
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
 

manibam

Benutzer
Mitglied seit
19. Jan 2011
Beiträge
28
Punkte für Reaktionen
1
Punkte
3
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>
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 

manibam

Benutzer
Mitglied seit
19. Jan 2011
Beiträge
28
Punkte für Reaktionen
1
Punkte
3
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 

manibam

Benutzer
Mitglied seit
19. Jan 2011
Beiträge
28
Punkte für Reaktionen
1
Punkte
3
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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