Launchd mac os что это

Launchd. Автозапуск программ при загрузке Mac 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. Это ключевой момент в понимании того как происходит работа системы и его стоит рассмотреть подробнее:

Все конфигурационные файлы, находящиеся в данной директории, выполняются при входе в систему (логине) КОНКРЕТНОГО пользователя (в каталоге которого они находятся) и с правами этого пользователя, не затрагивая при этом систему и других пользователей.

Системная директория. Все находящиеся в ней конфигурационные файлы исполняются при логине ЛЮБОГО пользователя с правами вошедшего пользователя.

Снова системная директория, но все конфиги исполняются от лица администратора (root) на уровне системы. Программа или сценарий будет исполнен вне зависимости от того, вошёл какой-либо пользователь в систему или нет. Это и есть нужный нам вариант.

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

Системная директория зарезервированная OS X. Все конфиги, находящиеся в ней, являются системными и запускаются при загрузке системы с правами root. Сюда тоже не стоит лезть.

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

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

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

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

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

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

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

Читайте также:  Как использовать команду cd linux

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

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

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

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

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

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

Комментариев: 5

Как исправить это:

«launchctl: no plist was returned for: /Library/LaunchDaemons/smc 21.06.14.plist

nothing found to load»

Скорее всего дело в пробеле, который надо экранировать обратным слешем.

Доброго времени суток. Не могу понять как создать сам файл . plist. Не подскажите?

это обычный тестовый документ — создавать и править можно в любом текстовом редакторе. лично я предпочитаю Sublime Text

Хотелось бы реализовать нечто подобное для сценария создания RAM-диска при запуске ОС и перенести на него некоторые кеши. Не поможете решить эту задачу?

Источник

Запускаем программы при запуске Mac OS X — Launchd


Начнем с истории. Жили были десяток программ для запуска процессов или программ. И тысячи скриптов к ним. Dave Zarzycki из Apple решил написать программу, которая отличалась бы от выше написанных и предлагала бы единый, стандартизированный интерфейс к любым программам запускающим автоматически системой и другие вкусности.

Вот и вся история. Теперь к самой программе.

Называется она Launchd. И она с открытом исходным кодом. Опен сорс.
Все процессы при старте системы(в Mac OS X) запускаются одним процессом launchd. При загрузке launchd вызывается ядром как первый процесс и дальше вся система стартует с помощью него. Так же Launchd следит за тем чтобы процесс был запущен. Если он вдруг упадет, Launchd ему поможет и поднимет его.

Для начала решим для чего нам нужно запустить что-либо при загрузке и когда это надо сделать.
Если вам нужно чтобы программа или процесс запустился при запуске системы и даже когда пользователь не вошел, то следует создать файл в папке /Library/LaunchDaemons. Если же нужно только когда вы вошли в систему то в папке /Library/LaunchAgents. Так же можно использовать и другие директории, но в данной статье мы не будем их касаться.

Давайте создадим Daemon для запуска php-fcgi процессов.
sudo mate /Library/LaunchDaemons/com.php-fcgi
И так что же нам туда писать?
Сначала уясним что Property List это Xml файл. И он должен быть валидным. Иначе ничего не будет работать.
В Textmate есть проверка валидности этих файлов, так что никаких пробелем возникнуть не должно.

В этом файле должны содержаться 3 обязательных ключа.
Label — уникальный идентификатор.

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

OnDemand — Этот ключ говорит Launchd перезапустить процесс если он не запустился или упал. Так же устновив значение false говорит о том, что мы хотим чтобы процесс был запущен всегда.

Теперь обернем это все в стандартную запись присутсвующую во всех файлах подобного типа.

Сохраним. Теперь Launchctl — это программа интерфейс для Launchd.
С помощью нее мы сможем включать или выключать загрузку нашего кофигурационного файла.
Например следующая команда включит наш файл.
sudo launchctl load -w /Library/LaunchDaemons/com.php-fcgi.plist
А эта выключит.
sudo launchctl unload -w /Library/LaunchDaemons/com.php-fcgi.plist
И добавит ключ с параметром в наш файл.

Вобщем теперь у нас при загрузке должно запускаться 5 процессов php-cgi. Перезапускать их можно командой
sudo launchctl stop php
а так как у нас стоит OnDemand false, то это просто перезапустит процесс.

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

А теперь бонусы
Для многих копаться в командной строке лень или сложно. Для них есть вариант полегче. Это бесплатная программа Lingon.

Так же с помощью этой программы вы можете открыть com.apple.syslogd
и вместо /usr/sbin/syslogd написать /usr/sbin/syslogd -c 3 -a
Параметр -с 3 скажет игнорировать менее важные сообщения. И syslogd будет записывать только важные сообщения. Если хотите 0 это самые важные. 8 наименее.
Параметр -а скажет syslogd архивировать записи. И очищать активную базу записей каждые 24 часа.
Все это сделает немного быстрее ваш мак.

Читайте также:  Установка драйвера для сетевого адаптера windows

PS.
Когда я разбирался с launchd я столкнулся с небольшой проблемой. При старте вызывалась программа spawn-php (да я знаю что это было глупо) и она вызывала php-cgi процессы. При тестировании все было хорошо. Но при загрузке ничего не происходило. Только с десятого раза получалось запустить процессы. Не знаю с чем это было связано, может это проблема именно в spawn-php, но она решилась способом, который я описал выше, т.е. вызовом напрямую процесса.

Источник

Как поймать и удалить скрытые LaunchDaemons и LaunchAgents на Mac

Вы когда-нибудь испытывали эти разочарования на вашем Mac?

  • Приложение появляется в строке меню, но не в элементах входа в систему.
  • Safari перенаправляет на рекламные сайты или изменяет свою домашнюю страницу без вашего разрешения.
  • Неизвестные процессы потребляют процессор в фоновом режиме.

К сожалению, при таких неожиданных событиях удаление приложения из элементов входа в систему недостаточно для решения проблемы. Существует множество скрытых компонентов, и Apple не предоставляет их в типичном интерфейсе macOS.

Мы покажем, как вы можете отслеживать и принимать меры против этих скрытых элементов входа в систему для устранения уникальных проблем Mac.

Понимание процедуры запуска macOS

Когда вы нажимаете кнопку питания, ваш Mac загружается с серией знакомых событий:

  • Вы слышите слышимый звук при запуске (новые Mac не делают этого).
  • Логотип Apple появляется вместе с индикатором выполнения.
  • Вы увидите экран входа в систему после его завершения (или рабочий стол, если у вас включен автоматический вход в систему).

За кулисами MacOS запускает запуск программ процесс. Он отвечает за запуск, остановку и управление всеми другими процессами, включая системные и отдельные учетные записи пользователей. Процесс высоко оптимизирован и занимает всего несколько минут.

Чтобы проверить это самостоятельно, откройте Монитор активности приложение и выберите Просмотр> Все процессы. Вверху вы увидите два основных процесса: kernel_task а также запуск программ, с их идентификаторами процессов (PID) как а также 1.

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

Основная ответственность запуск программ запускать другие процессы или задания по расписанию или по требованию. Они бывают двух типов: LaunchDaemons а также LaunchAgents.

Что такое LaunchDaemons и LaunchAgents?

LaunchDaemons обычно запускается от имени пользователя root, независимо от того, вошел ли пользователь в систему или нет. Они не могут отображать информацию с помощью графического интерфейса пользователя и влияют на всю систему.

Например, locationd процесс определяет географическое местоположение Mac, в то время как bluetoothd Процесс управляет Bluetooth. Список демонов живет в следующих локациях:

  • / System / Library / LaunchDaemons для собственных процессов MacOS
  • / Library / LaunchDaemons для установленных сторонних приложений

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

    / Library / LaunchAgents для всех учетных записей пользователей

/ Library / LaunchAgents для конкретной учетной записи пользователя

  • / System / Library / LaunchAgents только для macOS
  • Прежде чем войти, запуск программ запускает службы и другие компоненты, указанные в файлах PLIST, из папки LaunchDaemons. Как только вы вошли в систему, запуск программ запустит службы и компоненты, определенные в файлах PLIST, из папок LaunchAgents. Те в / System / Library все являются частью macOS и защищены защитой целостности системы

    Файлы предпочтений соответствуют стандартной системе именования обратных доменов. Он начинается с названия компании, за которым следует идентификатор приложения, и заканчивается расширением файла списка свойств (.PLIST). Например, at.obdev.LittleSnitchHelper.plist вспомогательный файл для приложения LittleSnitch

    Как поймать LaunchDaemons и LaunchAgents

    В отличие от тех, кто в система папка, общедоступная LaunchDaemon а также LaunchAgent папки открыты как для легитимных, так и для нелегитимных приложений. Вы можете отслеживать эти папки автоматически с помощью Действия с папками.

    Открой Редактор AppleScript приложение, выполнив поиск в Spotlight. Нажмите предпочтения и выбрать General> Show Script menu в строке меню.

    Нажмите на Скрипт Меню значок и выберите Действия с папками> Включить действия с папками. Затем выберите Прикрепить скрипт к папке в том же меню.

    Откроется диалоговое окно. Отсюда выберите добавить — оповещение о новом элементе.

    Нажмите Хорошо открыть окно Finder. Теперь выберите пользовательскую папку LaunchDaemon (приведенную выше) и нажмите выберите.

    Повторите вышеописанную процедуру для каждой папки LaunchAgents.

    Когда закончите, откройте Finder и нажмите Перейти> Перейти в папку или нажмите Shift + Cmd + G открыть диалоговое окно навигации. Тип

    / Library / LaunchAgents и нажмите Идти.

    Щелкните правой кнопкой мыши LaunchAgents папку и выберите Сервисы> Настройка действий с папками привязать скрипт оповещения о новом элементе к каждой папке.

    Читайте также:  Mac os встроенный монитор

    В появившемся диалоговом окне вы увидите список папок в левом столбце и скрипт в правом столбце. Если вы не видите никаких скриптов, нажмите плюс кнопка и добавить новый элемент alert.scpt.

    Рассмотрите возможность мониторинга этих папок с помощью приложений

    Если вам нужны дополнительные опции для оповещений в этих папках, попробуйте несколько сторонних инструментов.

    EtreCheck — это диагностический инструмент macOS, который отображает состояние загрузки сторонних LaunchDaemons и LaunchAgents, помимо прочего. Когда вы запускаете EtreCheck, он собирает различную информацию о вашем Mac

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

    Откройте EtreCheck и нажмите сканирование. Это займет несколько минут, и как только это будет сделано, вы увидите полную сводку вашего компьютера. Это включает в себя основные и второстепенные проблемы, спецификации оборудования, проблемы совместимости программного обеспечения, состояние LaunchDaemons и LaunchAgents и многое другое.

    Приложение бесплатно для первых пяти отчетов, а затем требует покупки в приложении за 10 долларов США для дальнейшего использования.

    Lingon X — это еще один инструмент, который позволяет запускать приложение, скрипт или автоматически запускать команду по расписанию. Он также может отслеживать все папки LaunchDaemons и LauchAgents в фоновом режиме и показывать уведомление, когда что-то меняется. Вы можете увидеть все элементы графически и настроить их по мере необходимости.

    Этот инструмент можно бесплатно попробовать и стоит 15 долларов за полную лицензию.

    Как удалить LaunchDaemons и LaunchAgents

    Публика / Library / LaunchAgents а также / Library / LaunchDaemons папки уязвимы как для легитимных, так и для нелегитимных приложений. Законное приложение может использовать его для маркетинга, в то время как нелегальные приложения могут использовать их для кражи данных и заражения системы.

    Чтобы рекламное и вредоносное ПО были успешными, они должны сохраняться в каждом сеансе пользователя. Для этого авторы вредоносных и рекламных программ создают вредоносный код и помещают его в папку LaunchAgent или LaunchDaemon. Каждый раз, когда ваш Mac запускается, запуск программ гарантирует, что вредоносный код запускается автоматически. К счастью, приложения безопасности могут помочь защитить от этого.

    Используйте Mac Security Apps

    Бесплатный KnockKnock работает по принципу постоянства. Он перечисляет постоянно установленные приложения и их компоненты в аккуратном интерфейсе. Нажмите на сканирование Кнопка, и KnockKnock будет сканировать все известные места, где могут присутствовать вредоносные программы.

    Левая панель содержит категории постоянных приложений, с именами и кратким описанием. Нажмите на любую группу, чтобы отобразить элементы в правой панели. Например, нажмите Launch Items в левой панели, чтобы просмотреть все LaunchAgents и LaunchDaemons.

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

    BlockBlock — еще одно бесплатное приложение для обеспечения безопасности от Objective-See, которое постоянно отслеживает места сохранения. Приложение работает в фоновом режиме и показывает вам предупреждение, когда вредоносная программа добавляет постоянный компонент в MacOS.

    Однако не все сторонние PLIST-файлы являются вредоносными. Они могут прийти откуда угодно, в том числе:

    • Компоненты установленных приложений
    • Остатки старых приложений, которые вы больше не используете
    • Остатки от предыдущих обновлений macOS
    • Остатки помощника по миграции
    • Щенки (потенциально нежелательные программы), рекламное ПО и вредоносное ПО.

    Вы не хотите удалять любые компоненты установленных приложений. Тем не менее, совершенно безопасно удалить остатки старых приложений и остатки от предыдущих обновлений macOS (если только вы не хотите продолжать использовать эти приложения).

    Для этого не существует уникального процесса удаления — просто удалите файл PLIST и перезагрузите компьютер. Или вы можете вырезать и вставить его на рабочий стол, чтобы иметь копию и быть в безопасности. Не удаляйте какие-либо предметы из Агенты запуска системы или же LaunchDaemons папки, так как они требуются для бесперебойной работы macOS.

    Adware и щенки общеизвестно сложно решать. В любое время, если у вас есть сомнения, запустите бесплатную версию Malwarebytes и рассмотрите возможность обновления до Malwarebytes Premium, если вам нужна дополнительная защита.

    Будьте осторожны с угрозами запуска на Mac

    Если вы выполните эти шаги, вы заранее узнаете о новых угрозах и сможете решить любые проблемы. Популярность рекламы и щенков растет, и постоянно появляются новые варианты вредоносных программ.

    К счастью, у macOS есть много способов защитить вас.

    Хитрость заключается в том, чтобы отслеживать эти папки и проводить частые диагностические проверки. Если вы сомневаетесь, всегда гуглите потенциально вредоносные имена процессов. Но если вы избежите ошибок, которые заражают ваш Mac вредоносным ПО

    Источник

    Оцените статью