Prozessstart und -ende beobachten

11/01/2008 - 19:03 von Michael Schuerig | Report spam
Ich habe eine Steckdosenleiste (Markenname Gembird oder Revolt) auf der
ich per USB einzelne Dosen schalten kann. Das möchte ich u.a. dazu
nutzen, um den Netzteil meines Scanners nur dann Strom zu geben, wenn
ich den Scanner tatsàchlich benutzen will. Die einfachste Lösung ist
sicher, dass ich für Programme, die den Scanner nutzen, Wrapperskripte
schreibe, die erst den Strom einschalten, dann das eigentliche Programm
starten.

Eine andere Idee ist, irgendwie zu beobachten, welche Prozesse gestartet
werden, die ausgeführten Programme mit einer Liste von
Scannerprogrammen zu vergleichen und entsprechend den Strom
einzuschalten. Ob diese Idee gut ist, weiss ich nicht. Für den Anfang
bin ich schon bei dem "irgendwie" stecken geblieben. Gibt es für diesen
Anwendungsfall geeignete Beobachtungsmöglichkeiten?

Michael

Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/
 

Lesen sie die antworten

#1 Heike C. Zimmerer
11/01/2008 - 21:24 | Warnen spam
Michael Schuerig writes:

Ich habe eine Steckdosenleiste (Markenname Gembird oder Revolt) auf der
ich per USB einzelne Dosen schalten kann. Das möchte ich u.a. dazu
nutzen, um den Netzteil meines Scanners nur dann Strom zu geben, wenn
ich den Scanner tatsàchlich benutzen will. Die einfachste Lösung ist
sicher, dass ich für Programme, die den Scanner nutzen, Wrapperskripte
schreibe, die erst den Strom einschalten, dann das eigentliche Programm
starten.

Eine andere Idee ist, irgendwie zu beobachten, welche Prozesse gestartet
werden, die ausgeführten Programme mit einer Liste von
Scannerprogrammen zu vergleichen und entsprechend den Strom
einzuschalten. Ob diese Idee gut ist, weiss ich nicht. Für den Anfang
bin ich schon bei dem "irgendwie" stecken geblieben. Gibt es für diesen
Anwendungsfall geeignete Beobachtungsmöglichkeiten?



Für externe USB-Platten mache ich es mit derselben Steckerleiste so:
Ich habe ein Verzeichnis /Backup und einen Automount-Eintrag für
dessen Inhalt:

[/etc/auto.master:]
/Backup /usr/local/sbin/autofs-backup-mount.sh --timeout --ghost

Das ruft also beim Versuch, einen Eintrag in diesem Verzeichnis
anzusprechen, ein Skript auf, wo die eigentliche Arbeit passiert. Bei
mir schaltet das die richtige Dose ein und mountet die passende
Platte. Bei Dir könntest Du einen bind mount eines Verzeichnisses
machen, in dem sich ein Symlink zu /dev/scanner befindet. Vielleicht
làsst sich auch etwas direkt über einen Symlink pfriemeln.

Dein Programm muss das Scanner-Device dann einfach im
Automount-Verzeichnis suchen statt in /dev.

(Ich habe noch einen weiteren Umweg über einen symbolischen Link
gemacht, damit der Name des Ziels nicht erst nach dem
Mounten sichtbar wird.)

Das Abschalten macht dann ein einfaches Überwachungsprogramm, das
prüft, ob noch gemountet ist. Der Automounter umountet nach Timeout.

Ähnliche fragen