我正在使用 iPad 遠端開發應用程式(當我回到 iMac 時進行測試)並對電腦上的檔案進行其他小的更改。到目前為止,我一直在 iOS 和 iMac 上使用 TeamViewer,而且它一直有效,直到我嘗試從 Windows 7 電腦存取我的 iMac。然後,有一次,TeamViewer 崩潰了。
我正在尋找一種在遠端程式失敗時重新啟動 Mac 的方法。有一個 Applescript 可以做到這一點嗎?
另外,是否有一個 VNC 程式具有相容的 iOS 應用程序,支援遠端重新啟動?
答案1
您無需重新啟動即可重新啟動 TeamViewer;您可以launchd
監視進程並在崩潰時重新啟動它。
首先,您需要識別實際的可執行檔。打開終端機並查看 TeamViewer 捆綁包 - 可執行檔可能位於,/Applications/TeamViewer.app/Contents/MacOS/TeamViewer
但您的情況可能會有所不同。若要檢查您是否找到了正確的路徑,請在終端中鍵入它 - 如果 TeamViewer 啟動,您可能已經找到了。或者,在 TeamViewer 運行時開啟活動監視器,識別 TeamViewer 進程並點擊工具列中的「檢查」。然後,在「開啟檔案和連接埠」標籤中,可執行檔可能是列出的第一個或第二個條目(在 後面/
)。
一旦您知道要追蹤的程序,您就可以建立launchd
屬性清單。這是一個 XML 文件,因此您可以使用您喜歡的文字編輯器來完成此操作,也可以使用隨 Mac OS X 開發工具安裝的屬性清單編輯器。創建以下內容:
<?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>
將其保存在 中~/Library/LaunchAgents/some.meaningful.name.plist
,然後打開終端機並執行以下操作:
launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist
這將導致 launchd 加載該項目,這將導致它監視指定的程序,如果它因任何原因退出,它將重新啟動。/Library/LaunchDaemons/some.meaningful.name.plist
只有當您的使用者登入時UserName
才會GroupName
運行。若要刪除該項目(例如,如果您確實需要退出 TeamViewer),只需將上述命令中的 load 替換為 unload 即可。sudo
launchd
或者,林貢為launchd提供了圖形介面,並且可能更容易。
答案2
您可以在 iMac 上設定一個任務來檢查 TeamViewer 進程是否存在,如果找不到則重新啟動。但為什麼不重新啟動該進程而不是重新啟動整個機器呢?
答案3
如果您熟悉命令列,這相當簡單。許多適用於 iOS 的 SSH 用戶端:您需要從共用首選項窗格中啟動「遠端登入」。
一旦完成此操作並處理了正確的網路細節,重新啟動所需要做的就是透過 SSH 連接到 iMac 並運行$ sudo shutdown -r now
,這將重新啟動電腦。假設這就是您啟動並運行 TeamViewer 所需要做的全部工作,那麼應該可以正常工作。
其他人建議重新啟動該過程。同樣,假設啟動 TeamViewer 所需要做的就是啟動應用程序,您首先需要強制退出現有掛起的進程:類似於$ sudo killall TeamViewer
,然後使用$ open /Applications/TeamViewer.app
類似的命令重新啟動應用程式。