出于某种原因,Dropbox 在上线几天后终止(崩溃或退出),没有任何解释。
因此,我开始研究一种AppleScript
在应用程序终止时自动重启应用程序的方法。
这让我想到了这个脚本:
repeat
delay 120 #Run every two minutes
tell application "System Events"
if name of every process does not contain "Dropbox" then tell application "Dropbox" to launch
end tell
delay 5
end repeat
我还希望脚本在后台运行,因此我为launchctl
.
在~/Library/LaunchAgents/
中,我创建了一个dropbox-keep-alive.plist
以此内容命名的文件:
<?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>Label</key>
<string>dropbox-keep-alive.job</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Users/xxx/Library/Mobile\ Documents/com\~apple\~ScriptEditor2/Documents/dropbox-keep-alive.scpt</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
上面给出了 AppleScript 的路径,并在 下分配<array>
了一个.job
标签。launchutil
<key>
然后我加载.plist
:
launchctl load -w ~/Library/LaunchAgents/dropbox-keep-alive.plist
然后启动它:
launchctl start dropbox-keep-alive.job
为了测试,我退出 Dropbox,然后等待 2 分钟以上,但没有任何反应。
如果我再试launchctl load -w
一次,我会收到它已经加载的消息。launchctl start
没有响应消息。
我知道 AppleScript 可以工作,因为它在osascript
直接运行时可以正常工作。但是在某个地方.plist
——或者我的管理launchctl
——有些东西是行不通的。
我已尝试launchctl unload -w
编写脚本并重做该过程。有任何想法吗?