Ich verwende mein iPad, um Apps aus der Ferne zu entwickeln (ich teste sie, wenn ich wieder an meinem iMac bin) und um andere kleine Änderungen an Dateien auf meinem Computer vorzunehmen. Bisher habe ich TeamViewer für iOS und iMac verwendet und es hat funktioniert, bis ich einmal versuchte, von einem Windows 7-Rechner auf meinen iMac zuzugreifen. Dann stürzte TeamViewer einmal ab.
Ich suche nach einer Möglichkeit, meinen Mac neu zu starten, wenn das Remote-Programm fehlschlägt. Gibt es ein Applescript, das dies kann?
Gibt es außerdem ein VNC-Programm mit einer kompatiblen iOS-App, die einen Remote-Neustart unterstützt?
Antwort1
Sie müssen keinen Neustart durchführen, um TeamViewer neu zu starten. Sie können launchd
den Prozess überwachen und ihn neu starten, wenn er abstürzt.
Zuerst müssen Sie die eigentliche ausführbare Datei identifizieren. Öffnen Sie ein Terminal und sehen Sie sich im TeamViewer-Paket um – die ausführbare Datei befindet sich wahrscheinlich unter , /Applications/TeamViewer.app/Contents/MacOS/TeamViewer
aber bei Ihnen kann es anders sein. Um zu überprüfen, ob Sie den richtigen Pfad gefunden haben, geben Sie ihn in das Terminal ein – wenn TeamViewer startet, haben Sie ihn wahrscheinlich. Alternativ können Sie den Aktivitätsmonitor öffnen, während TeamViewer ausgeführt wird, den TeamViewer-Prozess identifizieren und in der Symbolleiste auf „Untersuchen“ klicken. Dann wird die ausführbare Datei auf der Registerkarte „Geöffnete Dateien und Ports“ wahrscheinlich der erste oder zweite aufgeführte Eintrag sein (nach /
).
Sobald Sie wissen, welches Programm Sie verfolgen, können Sie eine launchd
Eigenschaftenliste erstellen. Dies ist eine XML-Datei, Sie können sie also mit Ihrem bevorzugten Texteditor erstellen oder alternativ den Eigenschaftenlisten-Editor verwenden, der mit den Mac OS X Dev Tools installiert wird. Erstellen Sie Folgendes:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.meaningful.name</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/path/we/identified/earlier</string>
</array>
</dict>
</plist>
Speichern Sie dies in ~/Library/LaunchAgents/some.meaningful.name.plist
, öffnen Sie dann ein Terminal und führen Sie Folgendes aus:
launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist
Dadurch lädt launchd das Element, wodurch es das angegebene Programm überwacht und, falls es aus irgendeinem Grund beendet wird, neu gestartet wird. Dies wird nur ausgeführt, wenn Ihr Benutzer angemeldet ist. Um es beim Booten auszuführen, legen Sie die plist in ab /Library/LaunchDaemons/some.meaningful.name.plist
, fügen Sie Schlüssel/Wert-Paare hinzu UserName
und GroupName
verwenden Sie sie, sudo
wenn launchd
load ausgeführt wird. Um das Element loszuwerden (wenn Sie beispielsweise TeamViewer wirklich beenden müssen), ersetzen Sie load im obigen Befehl einfach durch unload.
Alternative,Lingonbietet eine grafische Schnittstelle zu launchd und ist möglicherweise einfacher.
Antwort2
Sie könnten auf dem iMac eine Aufgabe einrichten, um zu prüfen, ob der TeamViewer-Prozess vorhanden ist, und neu starten, wenn er nicht gefunden wird. Aber warum starten Sie den Prozess nicht einfach neu, anstatt den gesamten Computer neu zu starten?
Antwort3
Dies ist ziemlich trivial, wenn Sie mit der Befehlszeile vertraut sind. Es gibt viele SSH-Clients für iOS: Sie müssen „Remote Login“ im Freigabeeinstellungsbereich aktivieren.
Sobald dies erledigt ist und die erforderlichen Netzwerkdetails beachtet wurden, müssen Sie zum Neustarten nur noch eine SSH-Verbindung zu Ihrem iMac herstellen und ausführen $ sudo shutdown -r now
, wodurch der Computer neu gestartet wird. Vorausgesetzt, das ist alles, was Sie tun müssen, um TeamViewer zum Laufen zu bringen, sollte das problemlos funktionieren.
Jemand anderes hat vorgeschlagen, den Prozess neu zu starten. Auch hier gilt wieder: Wenn Sie zum Aktivieren von TeamViewer nur die Anwendung starten müssen, müssten Sie zunächst den bestehenden, hängenden Prozess zwangsweise beenden: etwa so $ sudo killall TeamViewer
, und dann die Anwendung mit oder etwas Ähnlichem neu starten $ open /Applications/TeamViewer.app
.