Автоматический запуск и выборочная остановка нескольких экземпляров couchdb на osx
Я успешно установил couchdb с помощью homebrew:
% brew install couchdb
... и вызвал несколько экземпляров, как указано здесь:
% OLD=/usr/local
% NEW=/tmp/couchdb
% mkdir -p $NEW/etc/couchdb/
% mkdir -p $NEW/var/{lib,log,run}/couchdb/
% cp $OLD/etc/couchdb/local.ini $NEW/etc/couchdb/
Изменения local.ini:
[couchdb]
database_dir = /tmp/couchdb/var/lib/couchdb
view_index_dir = /tmp/couchdb/var/lib/couchdb
uri_file = /tmp/couchdb/var/run/couchdb/couch.uri
[httpd]
port = 5985
bind_address = 0.0.0.0
[log]
file = /tmp/couchdb/var/log/couchdb/couch.log
... и запустите команду запуска:
% couchdb -i -a /tmp/couchdb/etc/couchdb/local.ini
Теперь, когда у меня это работает, как я могу запустить каждый экземпляр при загрузке, и если я хочу уничтожить экземпляр (предпочитаемый по имени или некоторому известному идентификатору), как это можно сделать выборочно? Я использую OSX Mountain Lion 10.8.3 (с инструментами командной строки Xcode) на случай, если это поможет.
1 ответ
OS X способ запустить вещи при загрузке launchd
конкретно LaunchDaemon
, Для полного понимания стоит прочитать документацию Apple наlaunchd
; Также здесь есть много вопросов и ответов, которые могут вам помочь.
Короткая версия, вам понадобится файл, например, /Library/LaunchDaemons/org.inator.couchdb
это выглядит примерно так:
<?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>Label</key>
<string>org.inator.couchdb</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/couchdb</string>
<string>-i</string>
<string>-a</string>
<string>/tmp/couchdb/etc/couchdb/local.ini</string>
</array>
<key>OnDemand</key>
<false/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Обратите внимание, что это будет работать как root
; если вы хотите, чтобы он работал от имени конкретного пользователя, вам нужно использовать sudo
(например sudo -u inator /usr/local/couchdb …
).
Для запуска и работы вручную можно load
а также unload
это из launchd
с помощью launchctl
Например:
launchctl load /Library/LaunchDaemons/org.inator.couchdb
launchctl unload /Library/LaunchDaemons/org.inator.couchdb
Если вы хотите другой экземпляр, просто создайте новый файл в /Library/LaunchDaemons
с другим именем файла (и соответствующим Label
).