2009/09/29
起動時に任意のコマンドを実行する
Mac OS X 10.5 以降で起動時に任意のコマンドを自動で実行したい場合、
本来であれば launchd (8) を使用した制御が必要なので
/System/Library/LanchDaemons/ 以下に
plist ファイルを準備する必要がある。
しかし、/Library/StartupItems に
コマンド起動用のスクリプトファイルを設置する事により
任意のコマンドを起動できるので、
unix 系のシェルスクリプトに慣れている場合は
こちらの方が使いやすい場合もある。
- /Library/StartupItems に任意の名称 (ここではサービス名とする)でディレクトリを作成する。
-
作成したディレクトリに任意の名称で起動スクリプトを作成する
スクリプトファイルは サービス名 と同じ名称にする。 -
作成したスクリプトに実行権限を付与する
- 作成したディレクトリに StartupParameters.plist という名称でサービスの説明を記述したファイルを作成する。
-
ファイルの所有権限を root に設定する。
セキュリティ上の理由から、 ファイルの所有者が root 以外の場合は自動実行されない様だ。
# mkdir /Library/StartupItems/サービス名
# cat << EOF > /Library/StartupItems/サービス名/スクリプト名 > #!/bin/sh > > . /etc/rc.common > > StartService () > { > # サービスを開始するためのコマンドを記述 > } > > StopService () > { > # サービスを終了するためのコマンドを記述 > } > > RestartService () { StartService; } > > RunService "$1" > EOF
# chod 755 /Library/StartupItems/サービス名/スクリプト名
# cat << EOF > /Library/StartupItems/サービス名/StartupParameters.plist > { > Description = "/<u/>サービスの説明/</u/>"; > Provides = ("/<u/>提供するサービスの内容/</u/>"); > } >EOF
# chown -R root:wheel /Library/StartupItems/サービス名</i>
再起動するとサービスが自動で実行される。
トラックバック
https://blog.bsdhack.org/index.cgi/Mac/20090929.trackback