2010-09-06 7 views
2

Привет, друзья компьютерного компьютера :)Где разместить сценарий оболочки?

У меня есть сценарий оболочки, который я буду использовать в качестве сторожевого таймера. Он проверяет, работает ли моя другая «основная» программа. Если это не так, он перезапускает его.

Вопрос в следующем: Как я могу установить это на Mac? Есть ли сценарий файла папки/plist где-то, где ОС автоматически и периодически вызывают сценарий, гарантируя, что моя программа никогда не будет так долго без запуска? В идеале я бы хотел каждую минуту проверять, но каждый час или даже пару раз в день был бы удовлетворительным.

Спасибо!

ответ

4

Способ для этого в Mac OS X используется для запуска служб. Он заменяет более старые системные службы, такие как init и crontab, и предоставляет единую унифицированную инфраструктуру для управления системными службами.

В вашем случае вам, вероятно, не нужен отдельный сценарий, так как ведение экземпляра вашего приложения должно выполняться системой. Сначала вам нужно создать файл .plist, в котором описывается ваш демон/скрипт/приложение. Вы поместите его в одном из следующих мест, в зависимости от вида услуг:

  • ~/Library/LaunchAgents: для каждого пользователя агентов, предоставляемых пользователем.
  • /Library/LaunchAgents: Пользовательские агенты, предоставляемые администратором.
  • /Library/LaunchDaemons: Системные демоны, предоставляемые администратором.
  • /System/Library/LaunchAgents: Mac OS X Пользовательские агенты.
  • /System/Library/LaunchDaemons: Mac OS X Системные демоны.

После того, как вы определили службу, вы можете использовать команду launchctl для управления launchd. Например, вы можете перечислить запущенные службы, службы запуска/остановки и т. Д.

Полная документация находится здесь:

1

Crontab должно сделать вас красиво. Установите свой скрипт для запуска каждые X минут, а cron сделает все остальное. Если вы предпочитаете использовать графический интерфейс для своих программ, попробуйте cronnix.

+0

кронтаб не Mac OS X "путь". См. Ответ gavinb для официального ответа. – JeremyP

+0

@JeremyP Я принимаю ваш комментарий, но хочу уточнить, если бы вы это сделали. Разве вы не понимаете, что Launch Services включает Cron и имеет определенные преимущества (по сравнению с удобством для пользователя, то есть преимущества системы), используя Cron для планирования задач? Или вы просто имеете в виду, что рекомендуется использовать Launch Services через Cron? – Stephen

+0

Launch Services может делать все, что может сделать cron, и многое другое. Цель состоит в том, чтобы создать единую структуру для всего, что нужно запускать без вмешательства пользователя.Он заменяет inittab, rc.d, inetd, cron, at и стандартные демоны Unix и, возможно, нагрузку другого материала для запуска фоновых задач, которые накопились за эти годы. Не проще настроить, чем cron, но Apple утверждает, что работает лучше. – JeremyP

Смежные вопросы