Anwendungen wie Dienste laufen lassen

Binfort

Well-Known Member
Auf einem meiner Server werden ein paar SSH Tunnel gebohrt, welche dann von den Workstations im LAN benutzt werden können.

Die Tunnel liefen eigenständig im Hintergrund, jegliche Steuerung fehlte. Starten, Stoppen und Überwachen ist mit Scripten sicherlich leicht zu lösen und In den Ports gäbe es dafür auch daemontools, aber ich bevorzuge einfache Lösungen.

Im Basissystem ist daemon enthalten, ein kleines Werkzeug mit welchem sich meine Tunnel starten lassen und welches die Tunnel automatisch neu startet. Diese Konfiguration hat sehr zuverlässig funktioniert.

Vor kurzem bin ich dann auf einen Absatz in der init Manpage gestoßen:
The init utility can also be used to keep arbitrary daemons running,
automatically restarting them if they die. In this case, the first field
in the ttys(5) file must not reference the path to a configured device
node and will be passed to the daemon as the final argument on its
command line. This is similar to the facility offered in the AT&T
System V UNIX /etc/inittab.

Genau das habe ich gesucht.

In der /etc/ttys werden die Prozesse eingetragen:
Code:
# name getty type status comments
tunnel01 "/usr/bin/ssh -N tunnelconfig" unknown on
tunnel02 "/usr/bin/ssh -N testconfig" unknown off

Im ersten Feld steht ein beliebiger String, welcher in der Prozessliste nach dem Befehl angezeigt wird. Im zweiten Feld steht das Kommando, im dritten der Terminal Typ - in meinem Fall genügt unknown. Das vierte Feld steuert den Automatismus mit on od. off.

Abschließend liest init q die Datei neu ein.

Kann sein dass so etwas schon im Forum steht. Ich habe es nicht gefunden, falls doch... sry für den Spam. In ein paar Monaten habe ich das bestimmt wieder vergessen - aber dass ich so etwas hier rein geschrieben habe, vergesse ich nie!
 
Das ist interessant! Danke fuers Teilen.

Ich stelle mir vor, dass das mit einigen Anwendungen aufgrund von Abhaengigkeiten nicht funktionieren koennte. Wenn beispielsweise der Netzwerkkram erst spaeter initialisiert werden wuerde (was er hier offenbar nicht wird), dann koennte man alle Dienste, die Netzwerk brauchen, so nicht starten ...

Kurz: es waere hilfreich zu wissen, wann im Startvorgang die ttys gestartet werden, was davor gestartet wird und was spaeter kommt.
 
Danke für die Beschreibung, kann mal nützlich sein. Die Abhängigkeitsbedenken von sanbiber teile ich aber für den konkreten Anwendungsfall.

Deshalb noch der Verweis auf security/autossh, welches eine Überwachung der Tunnel und, falls erforderlich, einen Neuaufbau realisiert.

Gruß
 
Danke fürs Feedback.

@sanbiber, der Hinweis ist sehr interessant, Die Startabhängigkeiten habe ich nicht berücksichtigt und meine Konfig ohne Neustart, quasi im Betrieb mit init q übernommen.

Laut Manpage arbeitet init zunächst die rc Scripte ab. Verläuft dies erfolgreich geht das System in den Multi-User Mode und init lädt die /etc/ttys.
 
Über ttys gestartete Dienste dürften auch immer als root laufen - was man eigentlich grundsätzlich vermeiden will.
daemon(8) hat da wenigstens die Möglichkeit, einen User anzugeben, unter dem der Dienst dann läuft.

Rob
 
Zurück
Oben