OS X で起動時に任意のコマンドを実行する

  • 104
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

OS X 10.5 以降で起動時に任意のコマンドを自動で実行したい場合、本来であれば launchd(8) を使用した制御が必要なので /System/Library/LanchDaemons/ 以下に plist ファイルを準備する必要がありますが、/Library/StartupItems にコマンド起動用のスクリプトファイルを設置する事で、起動時に任意のコマンドを実行できます。
基本は普通のシェルスクリプトですので、シェルスクリプトに慣れている場合はこちらの方が使いやすいかも知れません。

/Library/StartupItems に任意の名称のディレクトリを作成する

ここでは "サービス" とします。

# mkdir /Library/StartupItems/サービス

作成したディレクトリに起動スクリプトを作成する

スクリプトファイルは "サービス" と同じファイル名にします。

# cat << EOF > /Library/StartupItems/サービス/スクリプト
> #!/bin/sh
>
> . /etc/rc.common
>
> StartService ()
> {
>   # 起動時に実行するコマンドを記述する
> }
>
> StopService ()
> {
>   # シャットダウン時に実行するコマンドを記述する
> }
>
> RestartService () { StartService; }
>
> RunService "$1"
> EOF

サービスの説明を記述した plist ファイルを作成する

サービスの説明と提供するサービスの内容を書いたテキストファイルを作成します。
ファイル名は StartupParameters.plist とします。

# cat << EOF > /Library/StartupItems/サービス/StartupParameters.plist
> {
>   Description     = "サービスの説明";
>   Provides        = ("提供するサービスの内容");
> }
> EOF

正しい権限を設定する

セキュリティ上の理由から、ファイルの所有者が root 以外の場合は自動実行されない様なので権限を正しく設定します。

# chmod 755 /Library/StartupItems/サービス名/スクリプト名
# chown -R root:wheel /Library/StartupItems/サービス名

これで次回の起動時より指定したコマンドが自動で実行されます。