Userface und Userface Server administrieren und warten
Start
Jedes Anwendungsprogramm unter VMS, das Userface benutzt, öffnet eine TCPIP-Verbindung über den Port 7770 zu einem Linux-Rechner. Welcher Rechner das sein kann, ergibt sich aus dem logischen Namen ACC_UFCSERVER_HOST.
Für den laufenden Betrieb ist dies einer der Rechner
asl320.acc.gsi.de .... asl327.acc.gsi.de, wo jeweils ein Dämon läuft, der daraufhin einen Server für diese Anwendung mittels eines Shellscripts startet. Siehe auch "Konfiguration von xinetd" Das Script stellt die richtige Umgebung für den Ufcserver her und startet den ufcserver unter
/common/usr/production/ufcserver/library.
Angucken kann man sich die laufenden Server mit ps -fe | grep ufcserver. und kriegt etwa folgende Ausgabe:
root 20475 3574 0 Jan04 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 20476 20475 0 Jan04 ? 00:00:00 /common/usr/production/ufcserver/library/ufcserver
root 22567 3574 0 Jan20 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 22568 22567 0 Jan20 ? 00:00:00 /common/usr/production/ufcserver/library/ufcserver
root 23854 3574 0 Jan15 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 23855 23854 0 Jan15 ? 00:00:00 /common/usr/production/ufcserver/library/ufcserver
root 26292 3574 0 Jan18 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 26295 26292 0 Jan18 ? 00:00:00 /common/usr/production/ufcserver/library/ufcserver
root 29453 3574 0 Jan15 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 29454 29453 0 Jan15 ? 00:00:01 /common/usr/production/ufcserver/library/ufcserver
root 29541 3574 0 Jan18 ? 00:00:00 /bin/bash /common/usr/production/ufcserver/ufcserver.sh
root 29542 29541 0 Jan18 ? 00:00:00 /common/usr/production/ufcserver/library/ufcserver
Man sieht jeweils das Script sowie den laufenden ufcserver selbst.
Die zweite Spalte gibt die Prozess_id an, die man auch in den Logfiles wiederfindet.
Start eines lokalen Ufcservers zu Testzwecken
Auch auf
asl722.acc.gsi.de läuft ein Dämon. Die Shell namens ufcserver-dev.sh liegt unter /common/usr/
develop/ufcserver/ufcserver.sh.In diesem Skript wird der LD_LIBRARY_PATH auf einen lokalen workspace gesetzt, jetzt: /home/bel/gschwarz/lnx/workspace/local/libasl64 Auch der logische Name für die libray zeigt hierhin: library -> /home/bel/gschwarz/lnx/workspace/local/libasl64. Um den ufcserver auf der asl722 zu starten muss man unter VMS den logischen Namen von ACC_UFCSERVER_HOST setzen. $def ACC_UFCSERVER_HOST "asl722.acc.gsi.de".
Logfiles
Geloggt wird in die zentralen log-Directories. Diese liegen unter
/common/log01/logs/<RechnerName>
Rechner asl320 .. asl327, der Rechner, auf dem der ufcserver läuft; File ufcserver.<Datum> .log
Geloggt wird beim Start:
Jan 23 08:02:11 asl323 info UFCserver[20296]: UFC: ufcserver 21.01 running for HECHLER, prc Deep Thought on axp704.acc.gsi.de
beim Beenden,
Jan 23 12:01:49 asl323 info UFCserver[20296]: UFC: socket closed client finished
Jan 23 12:01:49 asl323 info UFCserver[20296]: UFC: ufcserver 21.01 exiting for HECHLER, prc Deep Thought on axp704.acc.gsi.de
sowie in allen weiteren Fällen, in denen der loglevel <= LOG_INFO ist. (Default)
Die Ziffer in eckigen Klammern hinter UFCServer ist die Prozess_id des ufcservers.
Loglevel
Unter VMS kann man den Loglevel für den laufenden Prozess einstellen. ufclog_who zeigt den aktuellen Loglevel an, ufclog_on setzt den Level auf LOG_DEBUG, ufclog_off setzt den loglevel auf LOG_INFO. Da der ufcserver vorerst nicht mit kleinerem Loglevel laufen soll (und kann) reicht das fürs Erste.
Das entsprechende Command-File befindet sich unter sis_mgr und heißt ufcloglevel.
Konfiguration von xinetd
Auf jedem Blade läuft xinetd, ein Dämon, in dessen Konfigurationsfile
/etc/xinetd.conf
ein includedir angegeben ist. Dieses Verzeichnis
/aslnnn/etc/xinetd.d
ist rechnerspezifisch,
aslnnn
ist ein mount bind auf
/common/config/HOSTNAME
rechnerspezifisch. Hier liegt die Datei
ufcserver
(ein symbolischer Link auf
/common/config/etc/xinetd.d/ufcserver
). Dieses File enthält u.a. die Portnummer 7770 und den Pfad für das zu startende Script
/common/usr/production/ufcserver/ufcserver.sh.
Beide Dateien sind im Projekt
ufcserver/config
abgelegt.
Achtung: Einzelne Dateien haben im Repository einen anderen Namen als im Produktionsverzeichnis.
-
ufcserver.xinetd
- Produktionsname:
ufcserver
.
- Produktionsverzeichnis:
/etc/xinetd.d
.
-
ufcserver.sh
- Produktionsname:
ufcserver.sh
- Produktionsverzeichnis:
$PROOT/ufcserver
-
readme.txt
- enthält eine Kurzbeschreibung ähnlich dieser hier. Sie weist insbesondere auf die notwendige Sonderbehandlung bei der Änderung einzelner Dateien hin. Bitte beachten!
Code zusammenbauen
Eine Beschreibung zur Erstellung des VMS-Codes und den Zusamenbau des Linux Userface-Server findet sich unter
Userface Code.