Staying alive

Matthias Eckardt

Bei einem öffentlich aufgestellten Mac ist es nützlich, zu verhindern, dass ­jemand die laufende Anwendung beendet.

 Die üblichen Maßnahmen bei einem Präsentationsrechner sind ein Benutzer mit eingeschränkten Rechten, dem nur die Nutzung bestimmter Programme erlaubt ist, und aktivierte Kindersicherung mit vereinfachtem Finder. Ziel soll es sein, Programme, die vom Anwender oder durch Abstürze beendet wurden, sofort wieder neu zu starten. Dies gelingt, indem man den Mac über einen eigens definierten Agenten präpariert.

Dämonen und Agenten

Ein Dämon oder Agent läuft im Hintergrund ohne Interaktion mit dem Benutzer und kann auf bestimmte Ereignisse reagieren. Im Gegensatz zu einem Dämon agiert ein Agent nicht systemweit. Agenten sind Hintergrundprozesse, die unter einem angemeldeten Benutzer laufen können und deshalb sogar Zugriff auf den Benutzerordner erhalten. Agenten können sich bemerkbar machen und sogar über das GUI mit dem Benutzer in Interaktion treten. Beim Hochfahren des Systems werden Agenten und Dämonen von launchd in speziellen Einstellungsdateien gefunden und gestartet. Nachfolgend wird eine solche plist-Datei für einen Agenten erstellt.

Erstellen

Im Utilities-Ordner der Apple-Entwicklungswerkzeuge befindet sich der Property List Editor. Starten Sie dieses Programm, um die neue Voreinstellungsdatei zu definieren. Klicken Sie im leeren Dokument auf New Root. Klappen Sie Root über den Dreieckpfeil auf. Klicken Sie auf New Child. Klicken Sie dann noch zweimal auf den Button, dessen Name sich nun zu New Sibling geändert hat. Benennen Sie die drei neuen Einträge so wie in der Abbildung um: in der Reihenfolge KeepAlive, Label und Program. In der Spalte Class wählen Sie hinter dem Listenelement KeepAlive Boolean Yes. Label darf ein beliebiger Domänenname als Klasse String sein. Dies ist auch der beim Abspeichern zu benutzende Name der plist-Datei. Für unser Beispiel verwenden wir com.macup.stayingalive. Hinter Program belassen Sie die Klasse String. Als Value tragen Sie dahinter den Pfad zum auszuführenden Programm ein. Da Programme unter Mac OS X Ordner sind, muss man sich im Finder den Paketinhalt zeigen lassen und dann die Binärdatei aus dem Pfad xy.app/Contents/MacOS/ per Drag and Drop in das markierte Feld Value ziehen. Um auf einer Messe einen Film in einer Schleife abzuspielen, habe ich in Automator ein Programm bestehend aus den drei Aktionen Programm starten (QuickTime Player), Angegebene Filme abfragen (Dateiname hinzufügen) und Filme abspielen (bildschirmfüllend, Filmsequenz als Endlosschleife 999.999-mal) zusammengestellt.

Testen und bereitstellen

Speichern Sie die Property List in das Verzeichnis benutzername/Library/LaunchAgents mit der Dateiendung .plist. Der Agent startet nur für den dafür präparierten Benutzer und nicht sy⁠s­temweit. Ohne sich abmelden zu müssen, startet man mit launchctl load ~/Library/Launch Agents/com.macup.stayingalive.plist den Dienst. Mit launchctl unload Pfad lässt sich der Agent genauso wieder deaktivieren. Bei Tippfehlern erhalten Sie leider nicht immer eine Fehlermeldung wie etwa invalid argument. Starten Sie nun das zu überwachende Automator-Programm. Beenden Sie daraufhin QuickTime und danach das Programm. Sie werden sehen, dass beide sofort neustarten. Einem Anwender ohne Admin-Rechte ist es nicht möglich, dieses Verhalten zu beeinflussen. Statt Filmen können Sie so natürlich auch Präsentationen in Keynote oder PowerPoint wiedergeben.     me

Weitere Themen: Apple

Neue Artikel von GIGA SOFTWARE