Автоматический запуск и выборочная остановка нескольких экземпляров 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).

Другие вопросы по тегам