По какой-то причине 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
сценарий и повторить процесс. Любые идеи?
launchctl.plist
имеет ключKeepAlive
- person vadian   schedule 09.03.2016<key>KeepAlive</key><true/>
и какой-то идентификатор для приложения Dropbox (не знаю, как)? Не стесняйтесь оставлять ответ, если знаете решение. - person P A N   schedule 09.03.2016ProgramArguments
. - person vadian   schedule 09.03.2016