ryg

launchctl для Mac OS X

Интерфейс для lannchd

Синтаксис:

launchctl [подкоманды [параметры ...]]

Описание:

Утилита предназначена для управления демоном launchd для загрузки/выгрузки программ и выполнения их по заданному графику. Управление возможно с помощью подкоманд и с помощью интерактивного ввода через стандартный канал ввода/вывода данных. Список команд сохраняется в файлах $HOME/.launchd.conf или /etc/launchd.conf и проверяется при запуску launchd.

Подкоманды:

load [-wF] [-S sessiontype] [-D domain] paths ...

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

Замечание: открытие доступа к папке /System/Library/LaunchDaemons не root пользователям сделает вашу систему не загружаемой.
 -w
      Переопределяет ключ Disable и устанавливает его в False. В ранних версиях это изменяло конфигурационный файл, теперь этот ключ хранится не файле, а в другом месте.
 
-F  
     Принудительно загрузить plist. Игнорирует ключ Disable.
 
-S sessiontype
      Выполнение некоторых функций имеет смысл только в определенных контекстах. Данный флаг сообщает launchctl, что в случае использования флага -D искать задачи в разных местах. На данный момент можно использовать следующие sessiontype: Aqua, LoginWindow, Background, StandartIO, System.
 
-D domain
      Искать файлы с расширением *.plist в заданной области. Возможные области (domain): "system", "local", "network", "all". Когда указывается тип сессии, домен становится доступен для вызова пользователя. Например, без указания типа сессии флаг "-D system" утилита будет искать список свойств (plist файл) в папке /System/Library/LaunchDaemons, а если указан тип сессии, то в папке /System/Library/LaunchAgents.
 
unload [-w] [-S sessiontype] [-D domain] paths ...
Выгрузить конфигурационные файлы или каталоги файлов конфигурации и остановить процессы из этих файлов, если они запущены.
 
-w
       аналогично такому же параметру в подкоманде load.  
 
-S sessiontype
       аналогично такому же параметру в подкоманде load.  
-D domain
       аналогично такому же параметру в подкоманде load.  
 
submit -l label [-p executable] [-o path] [-e path] -- command [args] 
 
Простой способ запустить программу без создания конфигурационного файла. Механизм также сообщает launchd сохранить работу даже в случае программного сбоя.
 
-l label
             Назначает уникальную метку заданию в launchd
 
-p program
             какая программа должна быть выполнена, независимо от того, что указано после "--"
-o path
             указывает на путь, который будет использован для стандартного вывода
-e path
             указывает путь, который будет использован для вывода сообщений об ошибках.
 
remove job_label
    удаляет задачу из launchd 
 
start job_label
          запускает задачу, определенную меткой. Данная подкоманда предназначена для отладки.
stop job_label 
     останавливает задание с указанной меткой
list [-x] [label]
   Использование подкоманды list без параметров выводит список задач загруженных с помощью launchd в три колонки. 
 
Первая колонка PID идентификатор процесса
Вторая колонка показывает статус последнего завершения процесса. Отрицательное число показывает код сигнала завершившего процесс. Так, например -15 говорит о том, что процесс завершен по сигналу SIGTERM.
Третья колонка - это метка задачи
 
Некоторые метки могут иметь вид "0xdeadbeef.mach_init.program" это унаследованные задачи, исполняющиеся под эмуляцией mach_init. В будущих версиях данный механизм будет изменен и все задачи ранее использовавшие mach_unit, будут преобразованы под launchd.
Если указана метка [label], будет выведена информация о требуемой задаче. -x говорит о том, что информацию необходимо вывести в формате xml.
 
setenv key value
  установить переменную окружения внутри launchd.
 
unsetenv key
    очистить переменную окружения внутри launchd.
getenv key
    получить значение переменной окружения внутри launchd.
export 
    экспортировать все переменные окружения из launchd для использования в оболочке.
 
getrusage self | children
    получить статистику использования ресурсов для launchd или дочерних процессов launchd.
 
log [level loglevel] [only | mask loglevels...]
  Получить и установить маску (тип ведения) лог-файлов. Доступные уровни: debug, info, notice, warning, error, criticsl, alert и emergency. Подробнее syslog.
 
limit [cpu | filesize | data | stack | core | rss | memlock | maxproc | maxfiles] [both [soft | hard]]
Если в подкоманде не указаны параметры, утилита печатает все ограничения для launchd найденные с помощью getrlimit. Если указан ресурс, то программа печатает ограничения для указанного ресурса. Использование третьего аргумента после ресурса указывает жесткое и мягкое ограничение. Если будут указаны третий и четвертый аргумент тогда значение третьего будет установлено в качестве мягкого лимита, а четвертый в качестве жесткого.  
 
shutdown
   Сказать launchd подготовиться к перезагрузке и удалить все задания.
 
umask [newmask]
 
bslist [PID | ..] [-j]
  Эта подкоманда выводит список программ запускаемых при загрузке и их статус. Выводимый список выглядит линейным, однако,  он иерархический. Отображается три статуса "A" - активный, "I" - неактивный, "D" -по требованию.
  Если указан идентификатор процесса [PID] печатаются сервисы, доступные этому процессу. 
если указано -j то за каждым сервисом будет написано имя задачи зарегистрировавшего его.
 
bstree [-j]
  аналогично подкоманде bslist, но выводит результат в иерархическом списке.
 
managerpid
            Печатает PID launchd, который сейчас отвечает за загрузку
manageruid
              Печатает UID launchd, который сейчас отвечает за загрузку
 
 
managername
 Печатает название launchd менеджера задач, который сейчас отвечает за загрузку
 
          Смотреть подробнее в launchd.plist в разделе LimitLoadToSessionType 
help
     подсказка по команде.

Ссылки:

launchd - основной менеджер управления запуском программ в Mac OS X
cron - утилита выполнения задач по расписанию
crontab - утилита управления расписанием для cron
ptutil- используется для проверки синтаксиса файлов настроек прикладных программ (property list files). plist
open   - открыть файл, папку или страницу по URL
О каталогах и механизмах, которые могут быть использованы для автозапуска в OS X.
syslog
getrlimit