[Problem] SAS-Image: Probleme mit init.d-Script... Aufrufreihenfolge beim Start falsch...

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,995
Punkte für Reaktionen
8
Punkte
38
Brauche mal Hilfe bei den init.d-Scripten.

Bei der einen Himbeeren-Image läuft es richtig, bei der zweiten falsch.

Folgendes Problem. Es soll nach der Abarbeitung der /etc/fstab (Anlegung der RAM-Laufwerke) und vor dem Start des apache2 ein Script abgearbeitet werden, welches noch Verzeichnisse im RAM-Laufwerk erstellt.

nano /etc/init.d/starten
Code:
#! /bin/sh
# /etc/init.d/starten
#
### BEGIN INIT INFO
# Provides: Verzeichnissmaker
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: vmkr
# Description: Verzeichnismaker erstellt fehlende Verzeichnisse im RAM-Drive.
### END INIT INFO
#
echo "Verzeichnismaker"
echo "Script /etc/init.d/starten"
echo "=========================="
case "$1" in
start)
echo "Verzeichnisse werden erstellt..."
mkdir -p /var/log/proftpd
mkdir -p /var/run
mkdir -p /var/log
mkdir -p /var/log/apache2
mkdir -p /var/lock/apache2
chown www-data:www-data /var/lock
chown www-data:www-data /var/lock/apache2
echo "Fertig!"
exit 0
;;
stop)
echo "stop ohne Funktion."
exit 0
;;
*)
echo "Benutzung: /etc/init.d/starten {start|stop}"
exit 1
;;
esac
exit 0

chmod 0755 /etc/init.d/starten
update-rc.d starten defaults

Bei beiden Images werden die korrekten /etc/rcX.d erzeugt. Doch bei einem wird korrekt starten vor apache2 ausgeführt, beim zweiten fälschlicherweise danach ......... was ist falsch? :noidea:
 
Hallo,
ich sehe das du an dem Problem mit den Log Dateien arbeitest.
da brauchst du einen Linux Profi, fällt mir im Moment nur @koy... ein.

hab von Linux auch nicht viel Ahnung, aber vllt. ist es ja wie beim Grub Menü, da wird die Reihenfolge nach dem Namen sortiert?
mal mit 1starten versuchen, aber wie gesagt, keine Ahnung!
 
Moins

Dankeschön, aber als...
ws65 schrieb:
...würd ich mich wirklich nicht titulieren.

System V
Die Runlevel auf echten Linuxsystemem müssen beachtet werden.
Mehrbenutzer laufen auf Runlevel 2.

Dein Skript gehört zwar ins /etc/init.d, aber gestartet wird es normalerweise als Link.
Und zwar in: /etc/rc2.d
Und dort kannst du ganz genau bestimmen wann es gestartet wird.
Lies dazu auch mal: /etc/rc2.d/README

Spendiere deinem Skript einen (richtigen) LSB Header...
Code:
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $portmap
# Should-Stop:       $portmap
# X-Start-Before:    nis
# X-Stop-After:      nis
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO
Quelle: /etc/init.d/README

Beispiel...
/etc/init.d/tester
Code:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $portmap
# Should-Stop:       $portmap
# X-Start-Before:    apache2
# X-Stop-After:      apache2
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO
case $1 in
start) ;;
stop) ;;
*) ;;
esac
...jetzt mal installieren mit...
Code:
update-rc.d tester defaults
...ergibt...
ls -la /etc/rc2.d
Code:
insgesamt 4
lrwxrwxrwx 1 root root  17 Jan  1  1970 K01lightdm -> ../init.d/lightdm
lrwxrwxrwx 1 root root  20 Apr 26 12:26 K06nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root  17 Apr 26 12:26 K06rpcbind -> ../init.d/rpcbind
-rw-r--r-- 1 root root 677 Jul 14  2013 README
lrwxrwxrwx 1 root root  18 Jan  1  1970 S01bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root  17 Jan  1  1970 S01ifplugd -> ../init.d/ifplugd
lrwxrwxrwx 1 root root  14 Jan  1  1970 S01motd -> ../init.d/motd
lrwxrwxrwx 1 root root  17 Jan  1  1970 S01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root  14 Feb 27 18:39 S01sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root  22 Jan  1  1970 S01triggerhappy -> ../init.d/triggerhappy
[COLOR=#ff0000]lrwxrwxrwx 1 root root  16 Apr 26 12:26 S02tester -> ../init.d/tester[/COLOR]
lrwxrwxrwx 1 root root  17 Apr 26 12:26 S03apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root  18 Apr 26 12:26 S04asterisk -> ../init.d/asterisk
lrwxrwxrwx 1 root root  14 Apr 26 12:26 S04cron -> ../init.d/cron
lrwxrwxrwx 1 root root  14 Apr 26 12:26 S04dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root  24 Apr 26 12:26 S04dphys-swapfile -> ../init.d/dphys-swapfile
lrwxrwxrwx 1 root root  13 Apr 26 12:26 S04ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root  15 Apr 26 12:26 S04rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  13 Apr 26 12:26 S04ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root  19 Apr 26 12:26 S04tinyproxy -> ../init.d/tinyproxy
lrwxrwxrwx 1 root root  18 Apr 26 12:26 S06plymouth -> ../init.d/plymouth
lrwxrwxrwx 1 root root  18 Apr 26 12:26 S06rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root  19 Apr 26 12:26 S06rmnologin -> ../init.d/rmnologin

Kurz: Mit X-Start-Before: solltest du es an die Stelle bekommen wo es hingehört.
 
Zuletzt bearbeitet:
Wie ich sagte habe ich ja zwei eigentlich identische Images. Bei beiden sind in den jeweiligen Runlevels die Sxxstarten erzeugt worden. Beim einen arbeitet es tadellos, nur beim zweiten trotz identischem Aufbau und Vorgehen fährt mir der apache2 zu früh hoch und starter zu spät, obwohl es laut Priority vorher hätte starten müssen. Ich schau mir das nochmal sehr genau an. Ich wollte schon die Verzeichniserzeugung in die /etc/init.d/mountall.sh packen, aber ich fummel da nicht gerne in Dateien rum, die ein eventuelles Update später überschreiben könnten, weil sie vom BS sind.

Erstmal Danke für die Infos. Der header, den ich verwende, erzeugt eigentlich die richtigen Einträge. Mal sehen... nochmal alles zerlegen... :gruebel:
 
@JL3: "erzeugt eigentlich die richtigen Einträge"
...hast du denn mal den Header von...
Code:
#! /bin/sh
# /etc/init.d/starten
#
### BEGIN INIT INFO
# Provides: Verzeichnissmaker
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: vmkr
# Description: Verzeichnismaker erstellt fehlende Verzeichnisse im RAM-Drive.
### END INIT INFO
#
...auf...
Code:
#! /bin/sh
# /etc/init.d/starten
#
### BEGIN INIT INFO
# Provides: Verzeichnissmaker
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
[COLOR=#ff0000]# X-Start-Before:    apache2
# X-Stop-After:      apache2[/COLOR]
# Short-Description: vmkr
# Description: Verzeichnismaker erstellt fehlende Verzeichnisse im RAM-Drive.
### END INIT INFO
#
...getestet/ausprobiert?
 
Ich bin gerade noch einen Schritt weiter gegangen und habe

Code:
# X-Start-Before: rsyslog
# X-Stop-After: rsyslog
#

eingetragen und das hat jetzt bei beiden Images funktioniert. Der Tipp mit X-Sart-Before war genau der richtige. ;) Vielen Dank. :)
Bei dem einen Image - wo es auch ohne den Eintrag lief - wurde es vorher wohl nur zufällig richtig einsortiert.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.