すがブロ

sugamasaoのhatenablogだよ

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

TRAC というか、実際はApache の設定だけれども。

#!/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^)\