AW: [Allegro] Avanti-X: starten

Thomas Fischer fischer at mail.sub.uni-goettingen.de
So Mär 18 10:20:09 CET 2007


Hallo Herr Berger,

danke für Ihre Antwort.
Ich habe zwischenzeitlich selber noch ein wenig weiter geforscht, mehr dazu
unten.
Hier noch ein wenig Information zu den Rahmenbedingungen, vielleicht können
andere damit dann auch etwas anfangen.
Auf dem Server, auf dem unser Avanti läuft, wurde von dritter Seite neue
Software installiert, die den Neustart des Apache2-Servers nötig machte.
Dies ging nicht, weil Avanti den Port blockierte, darum musste kurzzeitig
Avanti gestoppt und nach dem Apache2-Start wieder gestartet werden. Dies
funktionierte entweder nicht (mit su wwwrun etc.) oder wurde von avadmin
nicht erkannt (ohne su wwwrun etc.)

> > ich kämpfe einmal wieder mit meinen Start-Programmen für den 
> > Avanti-X-Server.
> > Soweit ich sehe, benutzt avadmin in status.php den Aufruf 
> > my_posix_kill($pid, 1) um festzustellen, ob Avanti läuft.
> > Dabei kommt bei mir derzeit nichts zurück, unabhängig ob der Avanti 
> > unter der angegebnen Nummer läuft oder nicht.
> > Deswegen meldet status.php immer nut "Server läuft nicht", 
> > insbesondere kann ich ihn so nicht stoppen.
> > 
> > Das das my_posix_kill nur ein posix_kill und dieses im wesentlichen 
> > ein kill ist, frage ich mich, ob es an den Eigentümerrechten des 
> > Prozesses liegt – kill antwortet nur root und dem Besitzer 
> des Prozesses, soweit ich weiß.
> 
> und kill -1 ist das HUP-Signal, also ein ziemlich kraeftiges.
> avanti (hier konform mit vielen anderen U**X-Daemonen) wird 
> dadurch veranlasst, die Konfigurationsdateien neu einzulesen.
> 
> [kill antwortet jedem, aber das Betriebssystem laesst 
> natuerlich nicht zu, dass ein Prozess mit Signalen eines 
> "fremden" Benutzers belaestigt wird]

Da ist mir blöderweise ein Tippfehler unterlaufen. Der Aufruf ist
my_posix_kill($pid, 0) und soll eigentlich nur melden, ob der Prozess mit
der gegebenen Nummer aktiv ist. Der antwortet aber nicht (man kill):

     The kill utility sends a signal to the processes specified by the pid
op-
     erand(s).

     Only the super-user may send signals to other users' processes.

Soweit ich sehe antwortet kill also _nicht_ jedem.

> > Andererseits ist es mir auch nicht gelungen, den Besitzer des 
> > Avanti-Prozesses durch so etwas wie su wwwrun -c 
> > "/srv/avanti/avanti-2.2.9/bin/avanti -daemon"
> > zu steuern.
> 
> Viele Daemonen (z.B. auch das ZTarget, nicht jedoch avanti) 
> wechseln sofort nach dem Start (als root) auf eine andere, 
> ungefaehrliche Benutzerkennung um, die in der 
> Konfigurationsdatei hinterlegt ist.
> Das ist praktisch, wenn der Daemon in den regulaeren 
> runlevel- Mechanismus (etc/rc.d und unterhalb) eingebunden 
> ist, also durch root beim Sytemstart automatisch gestartet 
> wird. Allerdings kann nur ein root (oder dem Zielbenutzer) 
> gehoerender Prozess ohne Passwortabfrage dergestalt die 
> Identitaet wechseln.

Das ist im wesentlichen das Problem. Ich habe noch einmal in den Avanti-Mail
gesucht und bin bei einem Hinweis von Herrn Henkel vom  7. Mai. 2004, 18:05
fündig geworden, wo er empfiehlt, den Eigentümern von avanti auf wwwrun und
zusätzlich +s zu setzen, damit der Prozess unter seinem Eigentümer läuft.
Das scheint soweit zu helfen, als avant jetzt unter wwwrun läuft und von
avadmin erkannt wird.

Auch das reload von Avanti scheint mit den folgenden Befehlen zu
funktionieren:

  killproc -SIGHUP $AVANTI
  pidofproc $AVANTI > /var/run/avanti.pid

(Avanti löscht avanti.pid bei dem SIGHUP-Befehl und legt es nicht neu an.)

Ihre weiteren Hinweise werden ich morgen zu verdauen suchen.

Mit freundlichen Grüßen
Thomas Fischer 




Mehr Informationen über die Mailingliste Allegro