Macの起動時にPostgreSQLが自動起動されるように設定する

正確にはMacの起動時ではなく、ログインしたときに起動、ログアウトしたときに終了される設定。

起動、終了スクリプト作成

自分の環境では、postgresは/usr/local/pgsqlにインストールし、管理ユーザーはデフォルト通りpostgresであるため、以下の内容のスクリプトを作成。

起動スクリプト例:/usr/local/bin/LoginHook

#!/bin/sh
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /Users/postgres/`date +%Y%m%d`.log start

終了スクリプト例:/usr/local/bin/LogoutHook

#!/bin/sh
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop

スクリプト自動実行設定

ここ(アップルのサイト)が参考になる。
以下のコマンドで、作成したスクリプトがログイン、ログアウト時に実行されるように設定する。

$ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/LoginHook
$ sudo defaults write com.apple.loginwindow LogoutHook /usr/local/bin/LogoutHook

以下のコマンドで設定確認できる。

$ sudo defaults read com.apple.loginwindow LoginHook
/usr/local/bin/LoginHook
$ sudo defaults read com.apple.loginwindow LogoutHook
/usr/local/bin/LogoutHook

(2013年1月14日追記)削除は以下のコマンドでできる。

sudo defaults delete com.apple.loginwindow LogoutHook
sudo defaults delete com.apple.loginwindow LoginHook