Mac でのスタートアップ(init.d的なヤツ)の作り方
SystemStarter を使う
Trac で使う Apache をサービス化させたかったので、SystemStarter なるものを使って、PC起動時に立ち上がるようにした。
以下のディレクトリ配下に適当なディレクトリを作成する。
/Library/StartupItems
既存であったディレクトリが大文字だったので、 TRAC というディレクトリを作成。
そのディレクトリ内に、
- StartupParameters.plist
- TRAC
というファイルを作成して、適当な内容を記載すれば良いらしい。
イマイチ、なにが正しいかわからないが、元々あった MySQL の設定ファイルを参考に作成した。
StartupParameters.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Description</key> <string>TRAC HTTPD SERVER</string> <key>OrderPreference</key> <string>None</string> <key>Provides</key> <array> <string>TRAC</string> </array> <key>Uses</key> <array> <string>Network</string> <string>Resolver</string> </array> </dict> </plist>
どうせパラメータなんて無いんだし、Description の Key と String の組み合わせがあれば良かった気がする。。。
TRAC
#!/bin/sh # # /Library/StartupItems/TRAC/TRAC # Suppress the annoying "$1: unbound variable" error when no option # was given if [ -z $1 ] ; then echo "Usage: $0 [start|stop|restart] " exit 1 fi # Source the common setup functions for startup scripts test -r /etc/rc.common || exit 1 . /etc/rc.common # The path to the mysql.server init script. The official MySQL # Mac OS X packages are being installed into /usr/local/mysql. SCRIPT="/opt/local/apache2/bin/apachectl" StartService () { # if [ "${MYSQLCOM:=-NO-}" = "-YES-" ] ; then ConsoleMessage "Starting TRAC server" $SCRIPT -k start > /dev/null 2>&1 # fi } StopService () { ConsoleMessage "Stopping TRAC server" $SCRIPT -k stop > /dev/null 2>&1 } RestartService () { ConsoleMessage "Restarting TRAC server" $SCRIPT -k restart > /dev/null 2>&1 } if test -x $SCRIPT ; then RunService "$1" else ConsoleMessage "Could not find TRAC startup script!" fi
なんとなく間違いがたくさんありそうだけど、とりあえず再起動したらきちんと TRAC が起動していたので良しとするか/(^o^)\