bash/debian: globaler usage counter bzw stack

06/01/2015 - 13:55 von Bernd Hohmann | Report spam
Ich hab hier ein Fernwartungsscript welches mich auf die Server und
Workstations bei Kunden verbindet.

Beim Start prüft das Script, ob schon eine Route zu diesem Kunden
gesetzt wurde, merkt sich das und setzt/löscht dann keine Verbindung,
Route, Mounts etc.

Solange ich die Verbindungen in umgekehrter Reihenfolge abbaue wie ich
sie aufgebaut habe, wird beim schliessen des letzten Fensters alles
sauber aufgeràumt.

Schliesse ich versehentlich das erste Fenster (und das passiert leider
hàufig), ràumt der natürlich auf legt alle Sitzungen lahm.

Was ich also bràuchte wàre irgendein globaler Usage-Counter oder ein
Mechanismus der mir sagt, dass ich der letzte Nutzer einer Semaphore bin.

Bislang ist mir nur eingefallen, in /tmp per Kunde eine Datei
aufzumachen und dort Fehleranfàllig einen Zàhler mitlaufen zu lassen.

Hat jemand eine bessere Idee? Einen Daemon wollte ich dafür jetzt nicht
schreiben.

Bernd
 

Lesen sie die antworten

#1 Rupert Haselbeck
06/01/2015 - 14:50 | Warnen spam
Bernd Hohmann schrieb:

Ich hab hier ein Fernwartungsscript welches mich auf die Server und
Workstations bei Kunden verbindet.

Beim Start prüft das Script, ob schon eine Route zu diesem Kunden
gesetzt wurde, merkt sich das und setzt/löscht dann keine Verbindung,
Route, Mounts etc.

Solange ich die Verbindungen in umgekehrter Reihenfolge abbaue wie ich
sie aufgebaut habe, wird beim schliessen des letzten Fensters alles
sauber aufgeràumt.

Schliesse ich versehentlich das erste Fenster (und das passiert leider
hàufig), ràumt der natürlich auf legt alle Sitzungen lahm.

Was ich also bràuchte wàre irgendein globaler Usage-Counter oder ein
Mechanismus der mir sagt, dass ich der letzte Nutzer einer Semaphore bin.

Bislang ist mir nur eingefallen, in /tmp per Kunde eine Datei
aufzumachen und dort Fehleranfàllig einen Zàhler mitlaufen zu lassen.

Hat jemand eine bessere Idee? Einen Daemon wollte ich dafür jetzt nicht
schreiben.



Der erste Prozeß, welcher eine Route anlegt, schreibt seine PID in eine
Datei namens $ROUTE. Jeder weitere Prozess sieht daran, dass die Route schon
bestehen sollte und schreibt lediglich seine PID in die bereits bestehende
Datei. Es mag nützlich sein, dennoch zu prüfen, ob die Route auch wirklich
besteht und ob die in der Datei angegebenen Prozesse noch laufen und ggfls.
passende Schritte einzuleiten (Route anlegen, Datei leeren,...).
Terminiert einer der Prozesse, so löscht er seine eigene PID zuvor wieder
heraus. Steht nur seine eigene PID in der Datei, dann löscht er die Route
und die Datei.
So hab ich das seit vielen Jahren am laufen, genau für den von dir
beabsichtigten Zweck

MfG
Rupert

Ähnliche fragen