本文へジャンプ

GIDEON STAFF BLOG

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

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

  1. /Library/StartupItems に任意の名称 (ここではサービス名とする)でディレクトリを作成する。
    # mkdir /Library/StartupItems/サービス名
    			
  2. 作成したディレクトリに任意の名称で起動スクリプトを作成する
    スクリプトファイルは サービス名 と同じ名称にする。
    # cat << EOF > /Library/StartupItems/サービス名/スクリプト名
    #!/bin/sh
    
    . /etc/rc.common
    
    StartService ()
    {
    	# サービスを開始するためのコマンドを記述
    }
    
    StopService ()
    {
    	# サービスを終了するためのコマンドを記述
    }
    
    RestartService () { StartService; }
    
    RunService "$1"
    EOF
    			
  3. 作成したスクリプトに実行権限を付与する
    # chod 755 /Library/StartupItems/サービス名/スクリプト名
    			
  4. 作成したディレクトリに StartupParameters.plist という名称でサービスの説明を記述したファイルを作成する。
    # cat << EOF > /Library/StartupItems/サービス名/StartupParameters.plist
    {
      Description     = "サービスの説明";
      Provides        = ("提供するサービスの内容");
    }
    EOF
    			
  5. ファイルの所有権限を root に設定する。
    セキュリティ上の理由から、 ファイルの所有者が root 以外の場合は自動実行されない様だ。
    # chown -R root:wheel /Library/StartupItems/サービス名
    			
  6. 再起動するとサービスが自動で実行される。