Sep 29, 2009

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

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

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

    再起動するとサービスが自動で実行される。

Edit this entry...

wikieditish message: Ready to edit this entry.
















A quick preview will be rendered here when you click "Preview" button.