Free non-revocable licenses
Ja, es scheint war wieder Lizenzen zu geben, die sich von der Kommandozeile aus nicht freigeben lassen. Das Problem hatten wir früher auch schon. Ich würde unseren code von daher noch etwas erweitern wollen. Der Algorithmus dafür wäre relativ simpel. Die Frage ist nur, wie erkennt das Programm, dass du ein Fall vorliegt. Es gibt zwar Fälle, wo 30 mal versucht wird eine Lizenz frei zu geben ohne Erfolg, dann bekommen wir eine Fehlermeldung. Allerdings gibt es auch den Fall, dass das Kommando ohne Fehlermeldung quittiert wird, die Lizenz trotzdem nicht freigegeben wird. Hier haben wir tatsächlich ein Problem und müssten eine weitere Nachfrage starten.
Ansonsten wäre der Allgoritmus:
if (count.lic.remove.tries > 30)
count.lines=1
/etc/init.d/abaqus_lm stop
while (count.lines !=0)
sleep 5
line.count=`netstat -pane|grep 27000|wc -l`
/etc/init.d/abaqus_lm start
sleep 60
Die Idee ist relativ simpel. Wenn nach zu langer Zeit die Lizenz nicht entzogen werden kann, wird der Abaqus Lizenzmanager neu gestartet. Man muss allerdings so lange warten, bis alle Prozesse auf Port 27000 freigegeben werden, sonst kommt es bei manchen Clients zu Problemen weil dann der Lizenzmanager auf dem Port 27001 springt. Also liegt zwischen dem Stoppen des Lizenzmanagers und dem Starten der Prozess, bei dem geguckt wird, ob tatsächlich kein Prozess mehr auf diesem Port hört. Nach dem Neustart des ABACUS Lizenz Managers, zu dem Zeitpunkt sollte das Optionsfile noch vorliegen, wird eine Minute gewartet, damit die Lizenzen gemäß des Optionsfiles verteilt werden.