- at.obdev.LittleSnitchUIAgent.plist (https://github.com/tjluoma/launchd-keepalive/blob/master/at.obdev.LittleSnitchUIAgent.plist)是基本的'keepalive' plist文件的示范。
请注意
<key>KeepAlive</key>
<true/>
和
<key>RunAtLoad</key>
<true/>
这些命令将告诉
launchd
只要用户登录就运行 ProgramArguments
中列出的程序,并且只要用户登录,就保持运行,不管什么情况下都是如此: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>at.obdev.LittleSnitchUIAgent</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Little Snitch/Little Snitch Agent.app/Contents/MacOS/Little Snitch Agent</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
如果
Little Snitch Agent
因任何原因而终止( 例如 崩溃或者 kill
) 将自动重新启动。
首先,你可以能会尝试创建几个 plists,以便保持所有最喜欢的应用程序处于运行中。
不要那样做。
想想如果你指定了
KeepAlive
的应用需要更新,会发生什么。 会发生什么应用告诉你它有更新,你下载它,应用退出,然后 --,它重新启动。 是否有机会完成更新? 您确定吗?
偶尔,
KeepAlive
应用程序可能会干扰重启或者注销。
在大多数情况下,更好的解决方案是将
KeepAlive
与 SuccessfulExit
一起使用。KeepAlive KeepAlive和- SuccessfulExit
例如 演示如何创建一个plist以保持应用程序运行所有时间,除非它cleanly退出( 例如 。 用户告诉它退出) 。 如果应用退出"成功"( 技术上是 0 ),它使用
KeepAlive
,但是如果应用退出,那么应用程序不会自动重启。 但是,如果应用程序崩溃( 退出代码不等于 0 ),那么它将自动重启。 下面是 launchd
代码的相关部分: <key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
如果你有一个应用程序有时会有故障,特别是在应用程序是在后台运行的或者菜单栏。
KeepAlive
和 NetworkState
另一个选项是
KeepAlive
和 NetworkState
,如 com.tjluoma.keeprunning.mail.plist,它告诉 Mail.app,只要我们有一个网络连接,就可以一直运行。
下面是专门处理"网络是向上的"部分的plist部分:?
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<true/>
</dict>
注意:如果你有IP地址,则 #1:
launchd
认为"网络"为"向上"。 但是,你的本地网络可能已经启动,但你与互联网的连接已经关闭。 比如现在我的ISP离线了,但是我连接到本地的Wi-Fi 网络,所以,只要关心 launchd
,"网络"就启动了。 记住"网络已经启动"并不一定意味着"互联网是up的。"
注意:重要的笔记 #2: 记住
launchd
不会因为网络连接中断而退出。 只有在应用程序退出时才使用 KeepAlive
,此时,launchd
将检查并表示"网络是向上的",如果回答是,它就会重新启动应用程序。 如果答案是否定的,它将不会重新启动应用程序。安装
除非另外说明,plists应该放在"$HOME/Library/LaunchAgents" ( 位置"$home中"代表你的主目录的路径,例如: /Users/sjobs/Library/LaunchAgents/
:如何启动新的launchd plist
默认情况下,
launchd
将在你登录时从"$HOME/Library/LaunchAgents" 加载'. plist'文件。 如果你想启动一个新的. plist,,你必须告诉 launchd
加载它。 要执行这里操作,请启动 Terminal.app 并键入: cd"$HOME/Library/LaunchAgents"
然后:
launchctl load com.tjluoma.keeprunning.mail.plist
( 将'。tjluoma 。keepRunning 。mail 。plist'更改为你想要加载的plist的文件名)
如何告诉 launchd
已经更改现有的plist?
如果已经更改现有的agavi并希望立即识别更改,则必须卸载它,然后重新加载它:
cd"$HOME/Library/LaunchAgents"
launchctl unload com.tjluoma.keeprunning.mail.plist
launchctl load com.tjluoma.keeprunning.mail.plist
如何卸载/删除 plist
同样,在 Terminal.app, 中:
cd"$HOME/Library/LaunchAgents"
launchctl unload com.tjluoma.keeprunning.mail.plist
然后把它移到废纸篓里:
mv com.tjluoma.keeprunning.mail.plist ~/.Trash/
或者删除它:
rm -i com.tjluoma.keeprunning.mail.plist
来自https://www.helplib.com/GitHub/article_106569
翻译自https://github.com/tjluoma/launchd-keepalive
No comments:
Post a Comment