ubuntuusers.de

inittab ersatz

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

luchs3

Anmeldungsdatum:
4. September 2006

Beiträge: 36

Hi,

Ich versuche gerade einen Asterisk Server zu installieren.
Für den Faxserver soll ich die Zeile

mo00:23:respawn:usr/local/sbin/faxgetty ttyIAX0


in die Inittab scheiben.
Mittlerweile habe ich herausgefunden, dass es die nicht mehr gibt unter Hardy.

Das mit upstart verstehe ich nicht ganz.
Wäre über eure Hilfe echt froh.

Gruß Niko

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Im Prinzip bedeutet die Zeile

mo00:23:respawn:usr/local/sbin/faxgetty ttyIAX0


nur, dass in den Runleveln 2 und 3 (trifft bei dir zu, da Debian/Ubuntu das nicht unterscheidet) die Anwendung

/usr/local/sbin/faxgetty ttyIAX0


als "root" gestartet wird. Über "respawn" wird, falls die Anwendung abstürzt, sie neu gestartet.

Upstart kenne ich nicht. Aber wenn dir der Neustart beim Absturz des Dienstes egal ist so schau entweder bei Dienste oder bei rc.local rein. Eigentlich sollte es ausreichen den oben genannten Befehl (ohne sudo) in /etc/rc.local einzutragen.

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

Diese Informationen werden unter Upstart im Verzeichnis /etc/event.d/ gesucht. Am besten kopierst du dort eine der tty-Dateien (aber nicht tty1) und passt sie entsprechend an.

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

hmm,
Danke erstmal.
Aber das funktioniert nicht ganz so, wie ich mir das vorgestellt habe.
Ich habe jetzt erstmal eine ttyIAX0 in die /etc/event.d geschrieben.
Dazu habe ich die tty1 genommen und angepasst.
Das Modem ist aber nicht erreichbar.

# This service maintains a getty on  from the point the system is
# started until it is shut down again.

start on stopped rc2
start on stopped rc3
start on stopped rc4
start on stopped rc5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /usr/bin/iaxmodem ttyIAX0

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

otzenpunk hat geschrieben:

Diese Informationen werden unter Upstart im Verzeichnis /etc/event.d/ gesucht. Am besten kopierst du dort eine der tty-Dateien (aber nicht tty1) und passt sie entsprechend an.

tty1 ist speziell. Nimm eine der anderen. Außerdem: Warum ist der Befehl plötzlich ein ganz anderer als oben?

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

Es müssen beide gestartet werden.
Ich habe es jetzt in die rc2 geschrieben, aber es funktioniert nicht.

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

By the way,

Wo ist eigentlich der Unterschied zwischen /etc/init.d/ und /etc/event.d/?

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

luchs3 hat geschrieben:

Wo ist eigentlich der Unterschied zwischen /etc/init.d/ und /etc/event.d/?

Hm, das ist etwas kompliziert, weil das alles gerade im Umbruch ist. Bis vor kurzem wurde das sogenannte SysVInit-System verwendet. Das definierte fünf sogenannte Runlevel (+ ein paar spezielle - 0 für den Shutdown, 6 für den Neustart und S für den Single-User-/Wartungsmodus). Theoretisch konnte man also fünf verschiedene Zustände definieren, und dann mit Hilfe des Befehls init zwischen diesen wechseln. Auf Redhat-Systemen war das z.B. immer so, dass 1 der Runlevel ohne Netzwerk war, 2 mit Netzwerk, und 5 mit grafischer Oberfläche. Debian-Derivate haben das aber nie benutzt, sondern immer nur S (Single-User) und 2 (normaler Betrieb).

Das Programm selber wurde durch die /etc/inittab gesteuert. Dort stand dann unter anderem drin, was init beim Runlevel-Wechsel jeweils machen sollte (nämlich die Skripte in den jeweiligen Verzeichnissen ausführen), und welche Programme sonst noch dauerhaft laufen sollten. (Hauptsächlich eben die Getty-Prozesse auf den Terminals.) Oder was passieren soll, wenn man CtrlAltDel drückt. Theoretisch hätte man alles in die inittab eintragen können, aber zum einen konnte man da keine Reihenfolge definieren, in welcher die Befehle ausgeführt werden sollen, und zum anderen ist das nicht sehr paketmanager-freundlich, immer eine einzelne Datei zu editieren.

Weil das System aber schon ziemlich in die Jahre gekommen war und sich teilweise als ineffizient erwiesen hatte, beschloss Ubuntu, es durch das selbstentwickelte Upstart-Projekt zu ersetzen. Dieses vereint die Möglichkeiten der inittab und der Runlevel in einem, in dem es Dateien in /etc/event.d zur Konfiguration benutzt, in denen sowohl sowas wie respawn angegeben werden kann, als auch welche Dienste z.B. erst gestartet werden müssen, bevor ein Skript ausgeführt wird. Also kein linearer Ablauf, wie bei SysV im Runlevel, sondern ein Beziehungsgeflecht untereinander.

Da das aber Modifikationen in jedem Software-Paket mit sich zieht, was eine längerfristige Arbeit darstellt, hat man sich erstmal darauf beschränkt, in /etc/event.d Dateien für die jeweiligen Runlevel anzulegen, die dann genau wie bei SysV die Startskripte in der festgelegten Reihenfolge ausführen. Ob bzw. wann das endgültig umgestellt wird, weiß ich jetzt nicht.

Also wenn du respawn brauchst, solltest du /etc/event.d benutzen. Wenn man etwas hat, wo als Voraussetzung schon etwas anderes vorher passiert sein sollte, muss man z.Zt. ein RC-Skript verwenden.

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

Sehr interresant!

Um jetzt hoffentlich mein Problem endgültig lösen zu können frage ich nochmal ganz dumm nach.

Um den Befehl auszuführen muss ich was genau machen?
So wie ich das verstanden habe ist der rl im betrieb 2.
Also sollte die unten angeführte rc2 passen oder (bis auf den respawn)?
Mein Problem ist nur, dass er das Programm nicht startet.

start on runlevel 2

stop on runlevel [!2]

console output
script
        set $(runlevel --set 2 || true)
        if [ "$1" != "unknown" ]; then
            PREVLEVEL=$1
            RUNLEVEL=$2
            export PREVLEVEL RUNLEVEL
        fi

        exec /etc/init.d/rc 2

        exec /usr/bin/iaxmodem ttyIAX0

end script

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

luchs3 hat geschrieben:

Also sollte die unten angeführte rc2 passen oder (bis auf den respawn)?

Nein, diese Datei solltest du unter keinen Umständen verändern.

Zeilen, die in die inittab eingetragen werden sollen, müssen in eine /etc/event.d-Datei umgewandelt werden, und zwar eine Datei pro Zeile.

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

ok, ich habe jetzt einmal die /etc/event.d/iax erstellt:

start on runlevel 2

stop on runlevel [!2]

exec /usr/bin/iaxmodem ttyIAX0


Passt das so?
Und wenn ja, wie bekomme ich das mit dem respawn hin?

otzenpunk Team-Icon

Avatar von otzenpunk

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 8691

Wohnort: Hamburg-Altona

So wie es in /etc/event.d/tty2, tty3, tty4 usw. gemacht wird.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6493

Wohnort: Hamburg

Mal ein weiters Beispiel. Ich habe mir bei meinem Server einen Zugang über die Serielle Schnittstelle eingerichtet, weil der keinen Bildschirm und keine Tastatur hat, und das WLAN nicht immer verfügbar ist. Das sieht dann so aus:

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0

respawn
exec /sbin/getty -f /etc/helloserial02 9600 ttyS0 vt220
#exex /sbin/getty -L 9600 ttyS0 vt100

Die Standardversion wurde auskommentiert und durch eine modifizierte Version mit Begrüßungstext ersetzt.

luchs3

(Themenstarter)

Anmeldungsdatum:
4. September 2006

Beiträge: 36

Supermann!!!

funktioniert alles.

THX

Antworten |