Как использовать launchd, чтобы гарантировать, что приложение работает?

Я использую Quicksilver, который является изящной программой, которая действительно ускоряет мою работу. Я установил его для запуска, когда я вхожу в систему.

Однако начиная с Snow Leopard, это стало немного менее стабильным, и время от времени, это отказывает. И очевидно, это не перезапустит отдельно.

Я вполне уверен, я могу использовать launchd для обеспечения это всегда работает, когда я зарегистрирован. Существует ли хорошее руководство/пример того, как удостовериться, что процесс перезапускает, когда он уничтожается/завершается/разрушается с ним?

2
задан 28.04.2010, 01:16

2 ответа

Поиск с помощью Google для launchd quicksilver Я получил этот веб-сайт..., который выглядит правильным.

Вот суть его в случае, если та страница когда-либо уходит:

  • В предпочтениях QS отключите, “запускаются при входе в систему”

  • Создайте новый LaunchAgent в моей учетной записи, храня следующий файл как ~/Library/LaunchAgents/org.quicksilver.plist (на самом деле, я использовал Lingon для создания файла – очень удобная утилита!):

<?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>org.quicksilver</string>
        <key>ProgramArguments</key>
        <array>
                <string>/Applications/Quicksilver.app/Contents/MacOS/Quicksilver</string>
        </array>
</dict>
</plist>

Посмотрите man launchd.plist для получения дополнительной информации о ключах можно поместить в launchd plist файл, чтобы управлять, когда и как запуски launchd или перезапуски обрабатывают.

См. также: Создание демонов запуска и агентов.

3
ответ дан 08.12.2019, 07:34

Я не попробовал это, поскольку у меня нет Mac, но мне сказали, что он имеет удар как оболочку по умолчанию в эти дни. Вы могли возможно получить это движение со сценарием удара, который Вы выполняете на входе в систему каким-либо образом.

То, что это в основном делает, неоднократно выполняют данную команду, пока это не возвращает нуль, что означает, что это обычно закрывалось.

#!/bin/bash

RETVAL=1
until [ $RETVAL -eq 0 ]; do
    # change this to whatever is used to launch quicksilver
    /Applications/Quicksilver.app/Quicksilver

    RETVAL=$?
done

Править: Для разъяснения поместите это в пустой текстовый файл (дополнительно с .sh-расширением) и дайте его, выполняют полномочия (chmod +x filename) и это должно работать.

0
ответ дан 08.12.2019, 07:34

Теги

Похожие вопросы