2011-08-30 73 views
0

我可以使用launchctl啓動應用程序,如下所示:launchctl submit -l程序名稱 - 打開-g -b com.company.ProgramName,它非常棒!我可以殺死應用程序,即使它崩潰,它也會重新運行。Mac OS - 使用launchctl添加應用程序以自動啓動

但是,當我註銷或重新啓動Mac,我的過程不再運行。或者,在某些情況下,它不會與ProgramName(我的應用程序名稱)一起運行,但會以ProgramName.app/Contents/MacOS/program_name中的可執行文件名稱運行。

這樣的情況與plist文件。我運行命令launchctl -w/Users/my_username/Library/LaunchAgents和進程正常工作!但重啓後我看不到它。

我更喜歡第一種方法來加載進程,任何建議爲什麼進程不能在重新啓動後自動加載?

回答

0

我相信你需要設置「RunAtLoad」,以「真」爲它在啓動時,用戶登錄您的應用程序。

但也沒辦法使用「提交」時,通過命令行來設置RunAtLoad。至少不在我在線查看的launchctl.c版本中。

它看起來像你必須創建一個.plist文件與「加載」,而不是使用「提交」。

更令人討厭的是,launchctl的「加載」,無法將stdin作爲.plist文件名的輸入,無論是無參數還是名稱「 - 」。可惜的是,launchctl的開發者可能不是來自Unix背景。這意味着你必須在文件系統的某個地方丟棄短暫的文件,至少在你加載之前。

+0

嗯,它似乎從10.5「OnDemand」和「RunAtLoad」兩個替換爲「KeepAlive」。我正在閱讀它看起來較舊的文檔。 – lundman

相關問題