• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

"no such file or directory", aber nur bei startup

thommas

Newbie
ich habe einen startup link in /etc/init.d/rc3.d/S80lampp

beim startup in runlevel3 erfolgt die folgende error message:
"Lampp: no such file or directory"

wenn der rechner gestartet hat, und ich dann
./S80lampp start eingebe, dann funktioniert der link.

Weiss jemand, was das problem sein koennte??

viele dank

thomas
 

oc2pus

Ultimate Guru
das sieht so aus, als ob dein Script S80xxx zu früh gestartet wird.

Hast du den Link in /etc/init.d/... selber angelegt ?
 
OP
T

thommas

Newbie
den S80Lampp habe ich selber angelegt, doch es gibt keine weiteren Eintraege nach S80
 

oc2pus

Ultimate Guru
dachte ich mir ;)

mach es einfach richtig wie hier beschrieben und es wird funktionieren:
Wichtig: [HOWTO] runlevel scripte - selber erstellen
http://www.linux-club.de/viewtopic.php?t=16069
 

nbkr

Guru
Gib in den Startscript auch mal den vollständigen Pfad an sofern nicht schon gesehen. Das war mal das Problem bei mir.
 
OP
T

thommas

Newbie
Danke fuer die Tips. Die anleitung ist sehr gut.
Bei mir (Suse 8.1) funktionierts, auch mit dem autostart.

Bei einem anderen Rechner mit Suse 9.3 funktionierts nicht, obwohl wir exakt dieselben links haben (???).
 

oc2pus

Ultimate Guru
thommas schrieb:
Danke fuer die Tips. Die anleitung ist sehr gut.
Bei mir (Suse 8.1) funktionierts, auch mit dem autostart.

Bei einem anderen Rechner mit Suse 9.3 funktionierts nicht, obwohl wir exakt dieselben links haben (???).

bist du sicher das dein Service auch aktiviert wurde?
prüfe das mal mit dem YaST -Runlevel-Editor ob dein Dienst aktiviert ist UND ob er für die Runlevel 3 (und 5) aktiviert wurde.

das alleinige vorhandensein eines links und der Dateien startet NICHT automatisch den Dienst, erst die Aktivierung!
 

admine

Ultimate Guru
oc2pus schrieb:
das alleinige vorhandensein eines links und der Dateien startet NICHT automatisch den Dienst, erst die Aktivierung!
Hier würde ich gern eine Frage dranhängen und die ist IMHO nicht ganz OffTopic.
Ich bringe für gewöhnlich meine Run-Level-Scripte nicht via "insserv" od. YaST ins System ein, sondern kopiere diese einfach nach /etc/init.d und lege manuell die Links mit ln -s für ein Sxxscript bzw. ein Kxxscript in die entsprechenden Run-Level
(über gut od. nicht gut dieser Methode soll hier eher nicht diskutiert werden, mir sind die möglichen "Nachteile" bekannt)
und sie werden, so wie ich das möchte auch ausgeführt.
Was aber meinst du jetzt mit "Aktivierung"? :roll:
 
OP
T

thommas

Newbie
Ok..wir sind einen schritt weitergekommen.

wir haben ein paar echos in das startscript getan, gleich zu beginn. Wenn wir das startscript ausfuehren mit

/opt/lampp/lampp start (dann erscheinen die echos)

ebenso erscheinen die echos auch wenn wir das so ausfuehren mit dem s-link

/etc/init.d/rc3.d/S90lampp start

nun, wenn wir aber den rechner booten, dann kommen keine echos, nur die fehlermeldung

lampp: no such file or command
 

oc2pus

Ultimate Guru
aus der /etc/init.d/README
Code:
 The system configuration files in /etc/sysconfig contain  most  of  the variables  used  to  configure the installed services.  These variables can easily be changed by YaST or by using an  editor.  After  using  an editor,  the  script  /sbin/SuSEconfig must be called to distribute the settings into the system.
und das ist der SuSE spezifische voodo-magic. D.h es wird solange nach deinem Verfahren funktionieren wie keine Variablen aus der /etc/sysconfig ins SPile kommen, ansonsten "sourcen" die meisten runlevel-scripte diese /etc/sysconfig Konfiguration und werden ausgeführt oder auch nicht, abhängig von den gesetzten Variablen in /etc/sysconfig.

Das ist mit einer der Gründe warum ich immer wieder sage, man möge nicht einfach links in die Runlevel-Verzeichnisse legen. Und die Reihenfolge der links (also die Namensgebung) wird oft durch den Aufruf eines SuSEconfig unter Umständen willkürlich geändert (das hängt davon ab in welchem Kontext SuSEconfig aufgerufen wird). Die Nummerierung wird duch diese Sektion am Anfang eines runlevel Scripts beeinflusst:
Code:
### BEGIN INIT INFO
# Provides:          named
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Should-Start:      ldap
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Domain Name System (DNS) server, named
# Description:       Berkeley Internet Name Domain (BIND) implementation of the
#       Domain Name System (DNS) server named.
### END INIT INFO

ist IMHO aber dennoch off-topic, da fasches Forum ;)
 

admine

Ultimate Guru
thommas schrieb:
Ok..wir sind einen schritt weitergekommen.
wir haben ein paar echos in das startscript getan, gleich zu beginn. Wenn wir das startscript ausfuehren mit
/opt/lampp/lampp start (dann erscheinen die echos)
ebenso erscheinen die echos auch wenn wir das so ausfuehren mit dem s-link
/etc/init.d/rc3.d/S90lampp start
nun, wenn wir aber den rechner booten, dann kommen keine echos, nur die fehlermeldung
lampp: no such file or command
Hm ... sieht schon irgendwie nach fehlenden Variablen bezügl. Such-Pfade aus.
Hast du mal den Tipp von "nbkr" (vollständige Pfade im Script angeben) getestet ?
 

oc2pus

Ultimate Guru
hast du denn ein script lampp in /etc/init.d stehen ???

wenn nein lege dort eine script als wrapper-script für /opt/lampp/lampp an
aber wie das geht steht sowieso herrvorragend auf der xampp homepage erklärt. Es ist also müssig das hier zu wiederholen ;)

http://www.apachefriends.org/de/faq-xampp-linux.html#fsl
Code:
* Nach einen Neustart des Rechners läuft XAMPP nicht mehr?
Richtig, das ist normal für Linux und andere Unixe. Der Administrator muss selbst dafür sorgen, dass ein Dienst - in diesem Fall XAMPP - beim Neutstart des Rechners mit gestartet wird. In vielen Linux-Distributionen wird das automatisch gelöst oder es wird ein Runlevel-Editor angeboten.

Um XAMPP bei den meisten Linux-Distributionen "bootsicher" zu machen bitte die folgenden Schritte ausführen:

   1. Herausfinden, welchen default runlevel sein Linux-System hat.
      Dazu einfach egrep :initdefault: /etc/inittab aufrufen.
      Man sollte nun eine Zeile sehen, die zwischen zwei Doppelpunkten steht.
      In den meisten Fällen wird das 3 oder 5 sein.

   2. Nun in das Verzeichnis wechseln, dass diesen Runlevel configuriert.
      Wenn Dein Runlevel z. B. 3 ist dann mit cd /etc/rc.d/rc3.d in dieses Verzeichnis wechseln.
      Hinweis: Auf manchen Systemen funktioniert diese Methode nicht. Dort bitte /etc/init.d/rc3.d verwenden.

   3. Hier ist nun die eigentliche Konfiguration vorzunehmen.
      Und zwar mit den folgenden beiden Befehlen:

      ln -s /opt/lampp/lampp S99lampp
      ln -s /opt/lampp/lampp K01lampp

Nun wird XAMPP automatisch bei jedem Neustart von Linux mit gestartet. Und beim Runterfahren des Rechners auch ordentlich heruntergefahren.
 
OP
T

thommas

Newbie
Ja, genauso hatten wir es gemacht, wie in der anleitung beschrieben.

wir haben das lampp startscript jetzt ins /etc/init.d verzeichnis kopiert und die links im /etc/init.d/rc3.d dort drauf zeigen lassen. Jetzt funktionierts...... (???)

Wieso das??? vorher was das lampp einfach an einem anderen ort aber mit den richtigen links.

anyways, vielen dank fuer eure kommentare und Hilfe!
 

oc2pus

Ultimate Guru
weil nur die Scripte in /etc/init.d abgenudelt werden, wenn dort keines ist, dann wird auch der link in dem runlevel verzeichnis nicht ausgeführt ;)

deshalb auch mein Hinweis auf die README in /etc/init.d und auf mein Howto da steht genau drin wie das funktioniert ...
 
OP
T

thommas

Newbie
Ist das wirklich so?

Weil untenstehende Anleitung funktioniert im startup, obwohl es kein startscript im /etc/init.d gibt. Es gibt nur die links im rc3.d.

Wir hatten dasselbe problem noch mit einem anderen script. Als wir die scripte noch ins /usr/sbin verzeichnis verlinkt hatten, dann gings...... bei 8.1 mussten wir das nicht machen.


Code:
Um XAMPP bei den meisten Linux-Distributionen "bootsicher" zu machen bitte die folgenden Schritte ausführen: 

   1. Herausfinden, welchen default runlevel sein Linux-System hat. 
      Dazu einfach egrep :initdefault: /etc/inittab aufrufen. 
      Man sollte nun eine Zeile sehen, die zwischen zwei Doppelpunkten steht. 
      In den meisten Fällen wird das 3 oder 5 sein. 

   2. Nun in das Verzeichnis wechseln, dass diesen Runlevel configuriert. 
      Wenn Dein Runlevel z. B. 3 ist dann mit cd /etc/rc.d/rc3.d in dieses Verzeichnis wechseln. 
      Hinweis: Auf manchen Systemen funktioniert diese Methode nicht. Dort bitte /etc/init.d/rc3.d verwenden. 

   3. Hier ist nun die eigentliche Konfiguration vorzunehmen. 
      Und zwar mit den folgenden beiden Befehlen: 

      ln -s /opt/lampp/lampp S99lampp 
      ln -s /opt/lampp/lampp K01lampp
 

oc2pus

Ultimate Guru
in /sbin oder /usr/sbin legt SuSE normalerweise links auf die scripte welche in /etc/init.d stehen an. Aber unter einem anderen Namen, mit dem präfix rc

also in /usr/sbin z.Bsp: rcnamed, rcsquid, rcsasl, rcnfs ...
in /etc/init.d gibt es dann die "echten" scripte: named, squid, nfs ...

das ist der Magic hinter rcnamed start etc.

überzeuge dich selbst mit ls -al /usr/sbin/rc*

es kann sein, das bei alten SuSE Versionen es durchaus ausreichte einen link in das entsprechende /etc/init.d/rc.X Verzeichnis zu setzen. Letzendlich ist es das Programm init welches den Ablauf steuert. Und der Ablauf könnte sich geändert haben .. (werde mal meine alte 8.2 diesbezüglich prüfen).

Release-Notes studieren hilft hier evtl weiter um rauszufinden seit wann sich das so geändert hat.

bei 9.3 steht das in der README:
Code:
DESCRIPTION
       The scripts for controlling the system are placed in /etc/init.d/ (they
       have been moved according to the Linux Standard Base  (LSB)  specifica-
       tion).    These   scripts   are  executed  directly  or  indirectly  by
       /sbin/init,  the  father  of  all  processes.  The   configuration   of
       /sbin/init is given by the file /etc/inittab (see inittab(5)).

       At  boot  time, the boot level master script /etc/init.d/boot is called
       to initialise the system (e.g. file system check, ...).  It  also  exe-
       cutes some hardware init scripts linked into /etc/init.d/boot.d/.  Then
       it calls /etc/init.d/boot.local, which executes the local commands.

       After system startup, /sbin/init will normally switch  on  the  default
       run  level given in /etc/inittab.  It calls the run level master script
       /etc/init.d/rc to start or stop services provided by the other  scripts
       under /etc/init.d/.
 
Oben