Автозагрузка в os x

Launchd. Автозапуск программ при загрузке Mac OS X

Автозагрузка в os x

В этот раз поговорим про автозапуск программ при загрузке Mac OS X. Статья рассчитана на продвинутых пользователей и тех кто стремится к этому уровню. В MacOS X имеется встроенное решение для выполнения автоматизации различных действий – Automator. Программа очень продвинутая в умелых руках, о которой можно писать целые книги, однако сегодня речь пойдет о другом.

Mac OS X, как и другие UNIX-подобные операционные системы, предоставляет просто потрясающие возможности по управлению процессами, демонами и запуском приложений по расписанию. К примеру, можно запустить собственный веб-сервер, выполнять скрипты или программы по расписанию, монтировать файловые системы и т.д. Применений на самом деле масса.

Не так давно, я писал про ограничение оборотов кулера на Mac, таким способом можно снизить шум на MacBook, Mac mini или iMac.

Остался, правда, не раскрытым один достаточно важный вопрос, а именно, как автоматизировать запуск нашей утилиты, управляющей работой кулера? Согласитесь, не очень удобно всякий раз лезть в консоль и запускать её вручную.

Так что, предлагаю на этом конкретном примере разобраться с Launchd и ознакомиться с сервисами и демонами в Mac OS X.

Services (сервисы) и Daemons (демоны) Mac OS X

Для начала немного теории. «Сервисы» и «демоны» являются системными службами и обеспечивают работу системы, однако предназначены немного для разных целей, соответственно и работают тоже по-разному. Давайте разберемся, что конкретно делают эти «сервисы» и «демоны» и в чем разница между ними?

Начнем с того, что делают они практически всё, начиная с запуска WEB-сервера и заканчивая монтированием файловых систем и запуском графической оболочки.

Разница же между ними в том, что «сервисы», как правило, запускаются после загрузки графического интерфейса и предназначены, в основном, для запуска графических приложений; «демоны» могут запускаться до загрузки графики, в фоновом режиме и предназначены запуска bash/shell скриптов, серверов (служб) и всевозможных консольных утилит.

Сервисы представляют из себя конфигурационные XML файлы с расширением .plist, которые во время загрузки Mac OS обрабатываются и запускаются фоновым процессом launchd. Файлы .

plist находятся в директориях LaunchAgents или LaunchDaemons (в зависимости от их предназначения). В системе имеется несколько директорий LaunchAgents и LaunchDaemons.

Это ключевой момент в понимании того как происходит работа системы и его стоит рассмотреть подробнее:

  • ~/Library/LaunchAgentsВсе конфигурационные файлы, находящиеся в данной директории, выполняются при входе в систему (логине) КОНКРЕТНОГО пользователя (в каталоге которого они находятся) и с правами этого пользователя, не затрагивая при этом систему и других пользователей.
  • /Library/LaunchAgentsСистемная директория. Все находящиеся в ней конфигурационные файлы исполняются при логине ЛЮБОГО пользователя с правами вошедшего пользователя.
  • /Library/LaunchDaemonsСнова системная директория, но все конфиги исполняются от лица администратора (root) на уровне системы. Программа или сценарий будет исполнен вне зависимости от того, вошёл какой-либо пользователь в систему или нет. Это и есть нужный нам вариант.
  • /System/Library/LaunchAgentsСистемная директория зарезервированная OS X. Все конфиги находящиеся в ней являются системными, запускаются при логине любого пользователя. Лучше сюда не лезть без нужды.
  • /System/Library/LaunchAgentsСистемная директория зарезервированная OS X. Все конфиги, находящиеся в ней, являются системными и запускаются при загрузке системы с правами root. Сюда тоже не стоит лезть.

Как вы уже догадались, директории LaunchAgents используются для запуска «сервисов», а LaunchDaemons – для запуска «демонов».

Файлы конфигурации .plist

Как уже говорилось, все конфигурационные .plist-файлы запускаются фоновым процессом launchd во время загрузки OS X.

Сами по себе .plist-файлы всего лишь «сценарии», набор неких правил, для запуска других приложений и не являются самостоятельными программами, однако отличаются гибкостью и функциональностью в настройке. Пора рассмотреть пример, свой файл сценария я назвал my.fancontrol.plist:

Label FanControl ProgramArguments /Applications/smcFanControl.app/Contents/Resources/smc -k F0Mx -w 36b0 RunAtLoad

Пока вообще ничего не понятно, ну это мы сейчас поправим. Напомню задачу – необходимо при запуске Mac OS X, до входа пользователя в систему (а то какая-то несправедливость получится) в терминале выполнить команду:

/Applications/smcFanControl.app/Contents/Resources/smc -k F0Mx -w 36b0

Тем самым мы запускаем утилиту smc и передаем ей два параметра – указываем кулер и выставляем ему максимальную частоту оборотов. Выше вы видите получившийся код нашего сценария со стандартной шапкой формата XML (для всех служб и демонов она одинакова).

Что я тут понаписал? Итак, основные ключи и параметры .plist-файла:

LabelFanControl

Ключ «Label» задаёт название сервиса, которое будет отображаться в Мониторинге системы или логах утилиты Консоль.

ProgramArguments /Applications/smcFanControl.app/Contents/Resources/smc -k F0Mx -w 36b0

Ключ «ProgramArguments» содержит массив, в котором указаны путь к исполняемому файлу (или bash/shell скрипту) и параметры его запуска. Заметьте, что каждый параметр необходимо записывать отдельно.

RunAtLoad

Ключ «RunAtLoad» указывает системе, что правило нужно исполнить при загрузке ОС. Есть еще много всяких ключей и параметров, например для запуска приложения по расписанию или через определенные промежутки времени. Этой статьёй я даю лишь толчок для понимания дальнейшего изучения Launchd в OS X и не ставлю целью создать полноценное руководство.

файл создан. Осталось переместить его в папку-назначение (/Library/LaunchDaemons), поправить права доступа и атрибуты, и перезагрузиться. В терминале пишем:

#выполняем действия от rootsudo -s#перемещаем файл сценарияmv ~/Desktop/my.fancontrol.plist /Library/LaunchDaemons/#правим права доступаchown root:wheel /Library/LaunchDaemons/my.fancontrol.plist#правим атрибутыchmod 755 /Library/LaunchDaemons/my.fancontrol.plist

Активировать или дезактивировать работающий сценарии можно выполнив команды:

#launchctl load /Library/LaunchDaemons/[имя.вашего.файла].plist#launchctl unload /Library/LaunchDaemons/[имя.вашего.файла].plist

Напоследок, как обычно, ссылочка на хорошую статью про методы автозагрузки приложений в Mac OS X. LaunchAgents и LaunchDaemons.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Пароль на связке ключей «Локальные объекты»Time Capsule (A1470) не определяется и мигает желтый светодиод. Откуда берётся влага под радиаторами.

Владельцы iPhone могут больше не получать назойливую СМС рекламу Почему не стоит спешить с приобретением HomePodОдин день на iOS 7. Встречают по одёжке…Синхронизация сообщений в iCloud и AirPlay 2.

Apple выпустила iOS 11.4, watchOS 4.3.1 и tvOS 11.4

Источник: https://mdex-nn.ru/page/launchd-autostart-mac-os-x.html

Четыре способа настроить автозапуск приложений в OS X

Автозагрузка в os x

Процесс запуска приложений в OS X довольно прост и не требует большого количества усилий от пользователя, но все же бывают случаи, когда хочется, чтобы те или иные программы запускались самостоятельно, без каких-либо действий с вашей стороны.

К примеру, вы хотите, чтобы почтовый клиент открывался при входе в систему, или у вас есть какое-то специфическое приложение, которое вы обычно сами запускаете по пятницам в 9 утра. Или возможно вам бы хотелось, чтобы какая-то программа запускалась при подключении внешнего диска.

Вариантов может быть множество и большинство из них довольно легко реализовать средствами OS X.

Объекты входа

Самый распространенный способ автоматического открытия программ или документов в OS X — это настройка их запуска при входе пользователя в систему. Сделать это можно двумя способами.

  1. Щелкните правой кнопкой мыши по нужной вам программе в Dock и выберите пункт Параметры – Открывать при входе.
  2. Откройте меню Системные параметры – Пользователи и группы – Объекты входа. В этом окне вы можете добавлять и удалять объекты, которые должны (или не должны) запускаться при входе в систему.

Объекты входа часто используются для запуска фоновых приложений и дополнительных элементов меню программ сторонних разработчиков, но вы можете использовать их для запуска практически всего чего угодно.

Действия папок

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

Чтобы настроить действия папок необходимо запустить Редактор скриптов из папки «Утилиты», и в меню Редактор скриптов – Настройки – Основные поставить галочку напротив пункта «Отображать меню скриптов».

В результате в панели меню у вас появится новый элемент, открыв который необходимо выбрать пункт «Configure Folder Actions» в подменю «Folder Actions».

В открывшемся окне поставьте галочку, чтобы активировать эту функцию и добавьте нужные вам папки нажав на кнопку «+» (плюс) под левым столбцом. После этого нажмите кнопку «+» (плюс) под правым столбцом, чтобы выбрать действие, которое вы с ней хотите связать.

Например, можно добавить весьма  удобный встроенный скрипт «add—new item alert», который будет уведомлять вас, если в папке появятся новые элементы.

Того же результата можно добиться, если выбрать пункт «Attach script to folder», указать нужный скрипт, а затем папку, к которой вы хотите его прикрепить. После этого в меню скриптов необходимо выбрать пункт «Enable Folder Actions».

Вы также можете взять за основу упомянутый выше скрипт для создания своего собственного, который бы запускал то или иное приложение, или вообще создать скрипт с нуля при помощи Редактора скриптов или Automator (выбрав «Действие папки» при создании нового проекта).

К примеру, можно сделать так, чтобы при добавлении в папку файлов PDF, они бы автоматически открывались в просмотре.

  1. Запустите Automator из папки «Утилиты» и выберите «Действие папки» при создании нового проекта.
  2. Вверху окна выберите папку, изменение содержимого которой вызывало запуск скрипта.
  3. Перенесите в рабочую область элемент «Фильтровать объекты Finder» из списка слева.
  4. В настройках элемента установите значения таким образом, чтобы они соответствовали фразе «Найти файлы, в которых все следующие условия выполняются: тип совпадает с PDF», как показано на изображении.
  5. Перенесите из списка слева в рабочую область элемент «Открыть объект Finder» и в настройках элемента выберите приложение Просмотр.

После сохранения проекта все добавленные в выбранную вами папку файлы PDF будут автоматически открываться в Просмотре. По аналогии вы также можете настроить открытие других файлов и запуск других приложений, а также копировать, перемещать, удалять, переименовывать файлы и многое, многое другое. Возможности автоматизации в Mac OS X ограничиваются в основном только вашим воображением.

Календарь

Еще один любопытный способ автоматического запуска приложений — использование напоминаний в Календаре.

  1. Создайте новое событие в Календаре и включите для него напоминание.
  2. В графе «Предупреждение» выберите пункт «Настроить».
  3. Выберите тип напоминания «Открыть файл».
  4. Укажите документ, приложение, скрипт или программу созданную в Automator, которую вы бы хотели запустить.
  5. Укажите дату и время запуска.

В результате, в указанное вами время откроется выбранный вами файл или программа. Использование Календаря очень удобно, так как позволяет быстро и легко менять дату напоминаний и дублировать их при необходимости.

Элементы Launch Agents

Описанные выше способы позволяют добиться реализации практически любого сценария автоматического запуска программ.

Однако бывают случаи, когда вам может потребоваться больше контроля над запуском того или иного процесса, особенно если они фоновые и должны запускать через определенные промежутки времени (как в случае со скриптом для проверки Time Machine) или при определенных условиях (например, при подключении внешнего диска).

В этом случае могут помочь специальные файлы, которые называются Launch Agents. Они позволяют передать системному сервису, который отвечает за запуск процессов, инструкцию относительно нужной вам программы.

Создание этих файлов может оказаться довольно сложным, но это зависит от сложности самих задач, которые перед ними поставлены.

К тому же для упрощения процесса существуют специальные приложения, такие как Lingon или LaunchControl, о работе с которыми мы уже рассказывали в одной из предыдущих статей, и все же рассмотрим еще один пример с использованием LaunchControl.

Допустим вы хотите, чтобы при подключении внешних носителей автоматически запускалась Дисковая утилита.

  1. Запустите программу LaunchControl.
  2. В открывшемся окне первым делом выберите пункт «User Agents» в ниспадающем меню в левом верхнем углу.
  3. Нажмите кнопку «+» (плюс) в нижней части левого столбца, чтобы создать новый файл.
  4. Дайте ему имя, которое бы описывало, что это за файл и для чего он создан, например, «start.disk.utility».
  5. В раздел «Program to run» вставьте следующий текст: /usr/bin/open -W “/Applications/Utilities/Disk Utility.app” Вместо ввода конкретно этого текста вы можете просто перетащить любую другую программу, которую вам нужно запускать автоматически, в раздел «Program to run», но стоит учитывать, что перед путем к программе обязательно должна присутствовать запись /usr/bin/open -W.
  6. По умолчанию, к каждой новой записи уже добавлено условие запуска «Run at load», указывающее на то, что процесс будет запускаться при загрузке системы (или при входе в учетную запись). В нашем же случае его стоит удалить, нажав на крестик, а затем добавить в качестве условия подключение внешнего диска, перетащив элемент «StartOnMount» из списка справа в рабочую область.
  7. Для того чтобы сохранить наш файл и загрузить его в систему нажимаем кнопку «Load». В открывшемся окне снова нажимаем «Load», затем «Save and Load».

В результате при подключении внешнего диска или флешки у вас автоматически будет открываться окно Дисковой утилиты.

За оригинальный материал, который использовался в качестве основы при написании этой статьи в очередной раз говорим спасибо Кристоферу Кесслеру.

Automator, Launch Agents, LaunchControl, Lingon, автозапуск, автоматическое открытие программы, Действия папок, запланировать запуск программы, Календарь, Редактор скриптов. Закладка Постоянная ссылка.

Источник: https://mac03.ru/2015/11/06/start_apps_and_docimets_automatically/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.