在 osx 上自动启动和有选择地停止 Couchdb 的多个实例

在 osx 上自动启动和有选择地停止 Couchdb 的多个实例

我已经通过 homebrew 成功安装了 couchdb:

% 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 …)。

要手动启动和运行该作业,您可以使用loadunload它,例如:launchdlaunchctl

launchctl load /Library/LaunchDaemons/org.inator.couchdb
launchctl unload /Library/LaunchDaemons/org.inator.couchdb

/Library/LaunchDaemons如果您想要另一个实例,只需使用不同的文件名(和匹配的Label)创建一个新文件。

相关内容