Haupt Mac Ein abgestürztes Programm automatisch neu starten
Mac

Ein abgestürztes Programm automatisch neu starten

VonRob Griffiths 19. April 2007 17:00 PDT

Verwenden Sie eine Nur-Hintergrund-Anwendung (kein Dock-Symbol), die für Ihren Workflow entscheidend ist? So etwas wie Quicksilver , Butler , LaunchBar oder SnapzProX ? Wie fast alle OS X-Anwendungen stürzen diese Programme nicht sehr oft ab. Wenn sie es jedoch tun, kann dies lästig sein, da sie normalerweise nur still im Hintergrund sitzen und darauf warten, dass Sie etwas tun. Sie bemerken nur, dass sie abgestürzt sind, wenn Sie versuchen, sie zum Ausführen einer Aufgabe zu verwenden. Anschließend starten Sie das Programm neu und es funktioniert wieder im Hintergrund. Wäre es nicht schön, wenn es eine Möglichkeit gäbe, eine abgestürzte Anwendung automatisch neu zu starten?

Wenn Sie OS X 10.4 verwenden, können Sie dies tun, indem Sie die |_+_| . des Systems nutzen Dämon Manager. |_+_| verarbeitet alle System-Daemons für Dinge wie Netzwerke, Web-Serving und Drucken, kann aber auch Benutzer-Daemons starten, wofür wir es in diesem Hinweis verwenden werden. Durch die Nutzung eines |_+_| Funktion können wir einen Daemon erstellen, der nach Anzeichen für einen Programmabsturz sucht und dann das Programm neu startet. Sie können diesen Daemon zwar selbst erstellen, wir verwenden jedoch eine kostenlose Open-Source-Anwendung, um den Vorgang zu beschleunigen. Wenn Sie dies selbst tun möchten, werden in diesem Hinweis die erforderlichen Schritte erläutert.

Für mein Beispiel verwende ich SnapzPro – weil es eine Anwendung ist, die ich ständig verwende und die immer ausgeführt werden muss. Das soll nicht heißen, dass es öfter oder seltener abstürzt als jedes andere Programm, aber ich musste etwas als Beispiel nehmen!

Beginnen Sie mit dem Herunterladen Lingon , eine grafische Oberfläche zum Erstellen von |_+_| Dämonen. Nachdem Sie Lingon irgendwo auf Ihrer Festplatte installiert haben, starten Sie es und klicken Sie auf die Schaltfläche Assistent in der Symbolleiste. Da wir eine Aufgabe erstellen, um eine abgestürzte Anwendung neu zu starten, wählen Sie Anwendung/Skript ausführen, wenn eine Datei geändert wird. Sie könnten denken, dass eine Anwendung/ein Skript immer ausgeführt die richtige Wahl wäre, aber wenn Sie diese Option verwenden, können Sie das Programm nicht beenden, selbst wenn Sie es möchten! Mit diesem Ansatz stellen wir nur sicher, dass das Programm nach einem Absturz neu gestartet wird, sodass Sie es bei Bedarf selbst beenden können. Klicken Sie auf Weiter, um zum Dialogfeld Label zu gelangen, in dem Sie Ihren neuen Daemon benennen. Der von Ihnen gewählte Name muss auf Ihrem Computer eindeutig sein und er sollte eine umgekehrte Domänenbenennung verwenden, um der unter OS X verwendeten Konvention zu entsprechen. Ich habe meine Aktion com.robg.SnapzWatch genannt, wie hier zu sehen:

Sie können die anderen Optionen unverändert lassen und dann auf Weiter klicken. Auf dem letzten Lingon-Bildschirm geben Sie an, welche Datei gestartet wird und welche Datei auf Änderungen überwacht werden soll, die den Start des angegebenen Programms bewirken. Klicken Sie für das Programm auf die Schaltfläche Pfad und navigieren Sie dann zu dem Programm, das Sie nach einem Absturz neu starten möchten. Der einzige Trick besteht darin, dass Sie auf die eigentliche ausführbare Datei im Anwendungspaket verweisen möchten, nicht auf das Anwendungspaket selbst (der Dateibrowser in Lingon führt automatisch einen Drilldown in die Pakete durch, um dies zu vereinfachen). Bei den meisten OS X-Programmen finden Sie die ausführbare Datei im Bundle im Ordner Contents -> MacOS. Als ich zum Beispiel zur ausführbaren Datei von Snapz navigierte, hat Lingon den Pfad angegeben: /Applications -> Snapz Pro X (der Ordner) -> Snapz Pro X.app (das Anwendungspaket) -> Contents -> MacOS -> Snapz Pro X (die eigentliche ausführbare Datei). Sobald Sie die Programminformationen ausgefüllt haben, gehen Sie zum Feld Datei. Hier erzählst du |_+_| welche Datei auf Änderungen überwacht werden soll, die auf einen Absturz hinweisen.

Sie fragen sich vielleicht, welche Datei Sie anzeigen können, um festzustellen, wann eine Datei abgestürzt ist. Die Antwort ist, dass wenn ein Programm abstürzt, es ein Absturzprotokoll in den Ordner Library -> Logs -> CrashReporter Ihres Benutzers schreiben soll. Wenn die CrashReporter-Datei für eine bestimmte Anwendung geändert wurde, bedeutet dies, dass das Programm abgestürzt ist und neu gestartet werden muss. Navigieren Sie also im Feld Datei einfach zum CrashReporter-Ordner Ihres Benutzers und wählen Sie die Datei aus dem abstürzenden Programm aus. Für Snapz Pro ist das Snapz Pro X.crash.log. Klicken Sie anschließend auf Erstellen und Sie sind fertig. Wenn Snapz jemals abstürzt, wird es von nun an automatisch neu gestartet.

Beachten Sie, dass die Absturzprotokolldatei immer vorhanden sein muss, damit dies funktioniert. Wenn Ihre App also noch nicht abgestürzt ist, können Sie diesen Tipp wirklich nicht verwenden (da Sie nicht genau wissen, wie die Protokolldatei heißen könnte). Wenn die Protokolldatei jemals verschwindet, dann |_+_| hört auf, nach Änderungen zu suchen (da die Datei nicht gefunden werden kann). In diesem Fall müssen Sie sicherstellen, dass die Datei vorhanden ist (einfach im Terminal, |_+_| zuerst in das richtige Verzeichnis, dann |_+_| ), dann Lingon erneut ausführen und auf die Schaltfläche Neu laden für Ihren Agenten klicken .

Im Idealfall würden wir uns die Zeit nehmen, die Protokolldatei an den Entwickler zu senden, herauszufinden, warum der Absturz passiert, und verhindern, dass er erneut auftritt … aber manchmal, wenn die Fristen fordern, möchten wir einfach wieder an die Arbeit gehen. Lingon und |_+_| mach dir das so einfach wie möglich.