j-Serie DS211j optware Skripte starten nicht

Alle Geräte der Einsteiger j-Serie (Junior). Geräte für Privatanwender bis hin zu kleinen Firmen.
Status
Für weitere Antworten geschlossen.

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo,

habe auf meiner DS211j ipkg & pyload wie im Wiki beschrieben installiert.

Das Verzeichnis /usr/local/etc/rc.d habe ich von Hand angelegt und darin das Skript abgelegt.

Inhalt des Skriptes:
Rich (BBCode):
#!/bin/sh
#
# Optware setup
# Alternatives Optware Startup und Shutdown Script /usr/local/etc/rc.d/optware.sh
#
case $1 in
start)
       for i in /opt/etc/init.d/S??* ;do
#
               # Ignore dangling symlinks (if any).
               [ ! -f "$i" ] && continue
#
               case "$i" in
                  *.sh)
                       # Source shell script for speed.
                       (
                               trap - INT QUIT TSTP
                               set start
                               . $i
                       )
                       ;;
                  *)
                       # No sh extension, so fork subprocess.
                       $i start
                       ;;
               esac
       done
       ;;
#
stop)
#
       for i in /opt/etc/init.d/S??* ;do
#
               # Ignore dangling symlinks (if any).
               [ ! -f "$i" ] && continue
#
               case "$i" in
                  *.sh)
                       # Source shell script for speed.
                       (
                               trap - INT QUIT TSTP
                               set stop
                              . $i
                       )
                       ;;
                  *)
                       # No sh extension, so fork subprocess.
                       $i stop                       ;;
               esac
         done
         ;;
#
*)
         echo "Usage: $0 [start|stop]"
         ;;
esac
# End

Das Pyload Startskript auch wie im Wiki beschrieben platziert


Inhalt:
Rich (BBCode):
#!/bin/sh
#
# Start / Stop Script for PyLoad http://localhost:8000
#
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
NAME="PyLoad"
DAEMON="python /opt/pyload/pyLoadCore.py --daemon"
DAEMON_OPTS=""
#
#
start() {
       echo "Starting Service: $NAME"
       $DAEMON $DAEMON_OPTS | awk '{print $3}' >/var/run/pyload.pid
}
#
stop() {
       kill `cat /var/run/pyload.pid`
}
#
case "$1" in
       start)
               start
               ;;
       stop)
               stop
               ;;
       restart)
               stop
               sleep 4
               start
               ;;
       *)
               echo "Usage: $0 (start|stop|restart)"
               exit 1
               ;;
esac
#
# End

Problem ist: Beim Neustarten der DS wird Pyload einfach nicht gestartet. Beide Skripte von Hand auszuführen funktioniert. Ich hätte nur gerne, dass ich hier garnicht mehr Hand anlegen muss.

Jemand eine Idee?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das Verzeichnis /usr/local/etc/rc.d habe ich von Hand angelegt und darin das Skript abgelegt.

Stimmt der Pfad auch wirklich? Oder kann es sein, dass er wie folgt heisst: /usr/syno/etc/rc.d

Itari
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Der Pfad stimmt definitv, siehe auch mein angehängter Screenshot.

Ich habe das Gefühl, dass das Skript darin beim Booten garnicht ausgeführt wird. Bin im Moment total ratlos... :confused:
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
13.999
Punkte für Reaktionen
264
Punkte
373
Hallo,
/usr/local/etc/rc.d ist schon richtig. Wenn Du nur
Rich (BBCode):
/usr/local/etc/rc.d/optware.sh start
aufrufst, startet pyload dann automatisch?
Probiere auch mal S99pyload.sh zu S99pyload umbenennen.

Gruß Götz
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo,
/usr/local/etc/rc.d ist schon richtig. Wenn Du nur
Rich (BBCode):
/usr/local/etc/rc.d/optware.sh start
aufrufst, startet pyload dann automatisch?
Probiere auch mal S99pyload.sh zu S99pyload umbenennen.

Gruß Götz

Der Aufruf klappt und pyload startet dann. Ob das pyload skript mit .sh oder ohne ist, ist egal:


edit: Habe zum testen ein Script ins Verzeichnis /usr/local/etc/rc.d/ gelegt welches nur einen Ordner erstellt, neugebootet und der Ordner war erstellt. Also kann wohl davon ausgegangen werden, dass optware.sh auch ausgeführt wird, aber wohl während dem Booten noch nicht so funktioniert...

edit2: Ist es möglich, dass der Symlink noch nicht gesetzt wird wenn das Skript beim booten ausgeführt wird? Wenn ja wie überprüfe ich das?
 
Zuletzt bearbeitet:

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
So, durch Ausgabe in Logfiles steht nun fest, beide Skripte werden beim Hochfahren und beim Herunterfahren der Diskstation ausgeführt.

Durch einen Fehler im Pyload Skript hing dieses gestern beim booten, ich kam mit SSH aber auf die DS, wollte Nano starten...ging nicht "Command not found".

Ich denke also, dass das python Kommando beim booten dann einfach auch noch nicht geht weil die Pfade noch nicht gesetzt wurden. Kann das sein?

Jemand einen Lösungsvorschlag?

edit: Nein das ist es auch nicht, somit bin ich am Ende mit meinem Latein (Habe im Pyload Skript direkt /opt/bin/python angegeben...keine Besserung)
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
Hallo metacircle,

wenn ein Script bei interaktivem Aufruf (über telnet/ssh) funktioniert, bedeutet es noch lange nicht, dass das Script auch beim Booten funktioniert. Beim interaktiven Login werden einige Scripte durchlaufen (/etc/profile, ~/.profile), die einige Dinge (Pfad ...) einstellen. Das passiert nicht, wenn das Script als rc-Script beim Booten läuft. Ergo musst du die benötigten Einstellungen innerhalb deines Scripts selbst vornehmen.

Gruß
Benares
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Wie oben im Code gepostet wird das durchgeführt
Rich (BBCode):
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
Wie kann ich dieses Verhalten weiter debuggen? Macht mich total fertig... :confused:

Danke schonmal für die Geduld
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
Das Script läuft, wenn du es interaktiv aufrufst (... start)?
Wie sitzt dabei der Pfad (echo $PATH)?
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Beide Skripte funktionieren interaktiv (start, stop, restart)

$PATH liefert:
Rich (BBCode):
DiskStation> echo $PATH
-ash: /opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin: not found

Ich habe in beide Skripte schon ein
Rich (BBCode):
echo "script wird ausgeführt" >> /var/log/pyload.log
eingefügt, und sehe, dass beim booten auch beide ausgeführt werden, aber pyload startet eben nicht. Gibts eine Möglichkeit hier eine Fehlermeldung mitzuloggen beim booten um herauszufinden wieso es nicht starten will?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
Ersetz mal
Code:
$DAEMON $DAEMON_OPTS | awk '{print $3}' >/var/run/pyload.pid
temporär durch
Code:
$DAEMON $DAEMON_OPTS >/var/log/pyload.log 2>&1
Dann landen Standardoutput und Fehler (2>&1) im Log.
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Im Logfile steht nach Reboot
Rich (BBCode):
Daemon PID 2677
Aber von einem gestarteten Pyload ist weit und breit keine Spur...:confused:
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.007
Punkte für Reaktionen
2.699
Punkte
423
Sorry, dann weiss ich auch nicht.

Gibt's von Pyload selbst irgendwelche Logs?
Muss ja nen Grund haben, wenn er sich beim Booten wieder beendet.
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Habe meine Diskstation mit DSM 3.1 Beta neuinstalliert, nach Wiki vorgegangen, genau gleiches Problem :(
 

logop

Benutzer
Mitglied seit
16. Jul 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Der Pfad stimmt beim Start nicht.

Ich habe meine /usr/local/etc/rc.d/optware.sh ergänzt um

Rich (BBCode):
PATH=/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
export PATH

Rich (BBCode):
#!/bin/sh
#
# Optware setup
# Alternatives Optware Startup und Shutdown Script # /usr/local/etc/rc.d/optware.sh
#
PATH=/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
export PATH

case $1 in
start)
       for i in /opt/etc/init.d/S??* ;do
#
... usw.

Dann startet z.B. mein /opt/etc/init.d/S80moin.sh - Skript...
 

metacircle

Benutzer
Mitglied seit
26. Nov 2010
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Bei mir hat es leider keine Verbesserung gebracht. Pyload will nach wie vor nicht automatisch beim Booten starten.
 

logop

Benutzer
Mitglied seit
16. Jul 2011
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hm, ich habs bei mir auf der DS211 DSM 3.1-1748 gemäß wiki-Anleitung mal installiert, bei mir funktioniert der Aufruf beim Reboot. Sorry, dass ich nicht helfen konnte. :(
 

janus

Benutzer
Mitglied seit
07. Sep 2010
Beiträge
667
Punkte für Reaktionen
0
Punkte
0
Bei mir hat es leider keine Verbesserung gebracht. Pyload will nach wie vor nicht automatisch beim Booten starten.

Moin,
so sehr ich auch gegen die Verwendung von screen beim pyload Startup gewettert habe, beim Debuggen ist Screen dann doch sehr praktisch!

Wenn ich daran denke, schaue ich noch mal nach, wie das mit dem screen aufzurufen war.
Dann kann man sich nach dem Reboot in die Screen Session einklinken und nachsehen, welche Meldungen python geworfen hat. Das kann sehr hilfreich sein, da man sonst nur sehr schwer an Fehlermeldungen kommt.

Gruß

Janus
 
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