mac起動項目を設定する3つの方法をまとめます。


前言
Mac OS Xでは、起動項目の構成を実現するための3つの方法があります。1)Login Items。2)StartpuItems;3)launchd daemen。以下は多く話しません。詳しく紹介してみましょう。
1.Login Items
System Preferencesを開いて、System->Accentsを選択して、Login Itemsタブを選択して、/Appplicationディレクトリの下の.appを直接右のリストにドラッグします。コンピュータを再起動すると、リストのプログラムが起動後に自動的に起動されます。

2.Startuditems
StartpuItemsとは、名前の通りシステム起動中に実行されるプログラムであり、それらは実行終了直後に終了するプログラム(例えば、起動後に紙くずかごを確認する)であってもよく、システム運行周期のバックグラウンドプロセスを継続して行うことができる。
StartpuItemsは主に以下の2つの経路で保存されます。
1)/System/Library/StartuptItems
2)/Library/Startuplems
ほとんどのシステムに関連するStartpuItemsは/System/Library/StartupeItemsのルートの下に置かれています。それらは/Library/StartupuItemsのルートの下で実行されます。前者の経路のStartudimsはシステムレベルの基礎サービスを提供しています。例えば、Crash reportuding、coreportapping、corecs servicements、corvicesなどのパスは存在しません。自分で手動で作成する必要があります。
ここでは、私達はLibrary/StartuplemsディレクトリのIceberg Control Towerを例にしています。

簡単に言えば、Mac OS Xにおいて、StartuptItemsは以下の2つの態様の内容を含む。
1)プログラムを実行できます。
2)プロセス関係に依存するplistファイル(StartParameters.plist)が含まれています。
2.1 The Property List
2.1.1 Plistのkey値と意味
Startup Parameeters.plistは、実行可能なプログラムを実行するために必要な条件を含む属性リストです。

このplistはroot権限を得る必要があり、いくつかの態様の内容を含む。
1.Description;
このサービスについての簡単な説明は、単に説明であり、実際のプロセス名を説明するものではない。
2.Provides;
Startuplemsが提供するサービスを指定します。図plistファイルProvidesで説明したように、Startuplemsオープンのバックグラウンドプロセスの名前は、Iceberg Control Towerです。
Providesは複数のサービスを指定できます。図に反映されるのはItem 0、Item 1…などです。ここはItem 0だけです。
3.Uses;
StartpuItemsでロードする前にオープンするサービスを指定しました。Mac OS XシステムはUsesで指定されたサービスをロードしてからStartuplemsをロードしてみます。つまり、Usesで指定されたサービスがロードされなくても、システムはStartuplemsをロードします。
4.Order Preference;
Startuplemsを実行する時間順を指定します。この順序の重要度はUsesの後で、Usesを実行した後の順序を指定します。可能な値は、First、Early、None、Late、Lastを含む。
5.メッセージ。
2.1.2 Startp Parameters.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>Iceberg Control Tower Initilaization</string> 
 <key>Provides</key> 
 <array> 
  <string>Iceberg Control Tower</string> 
 </array> 
  <key>Uses</key> 
 <array> 
  <string>Disks</string> 
 </array> 
 <key>OrderPreference</key> 
  <string>None</string> 
</dict> 
</plist>
2.2 The Executable File
注意:
  • 実行可能ファイルの名前はそのフォルダのファイル名と同じです。これはシステムのデフォルトのルールです。
  • 操作可能ファイルはroot権限を得る必要があります。
  • 実行可能ファイルはshellスクリプトです。
  • Iceberg ControlTowerファイルディレクトリの同名の実行可能ファイルを開くと、スクリプトの具体的な内容が見られます。

    一般的な実行可能ファイルは、このようないくつかの態様の内容を含む。
    1)/etc/rc.com mmon
    Appleが提供するスクリプトライブラリには、実行可能ファイルのためのパラメータを導入するインターフェースが含まれています。ここでロードというライブラリは主にRunServiceを呼び出します。
    2)StartService()、StopService()、Restart Service()
    実行可能ファイルが受信したパラメータがstart,stopまたはrestartの場合には対応する関数が実行されます。
    パラメータの意味:
    start:起動中にサービスを開始します。
    stop:シャットダウン中にサービスを停止する。
    特定の条件の下でサービスを再開します。
    3)RunService「$1」
    スクリプトに渡す最初のパラメータ指定サービスを実行します。
    「$1」はスクリプトに送る最初のパラメータを表します。例えば、着信パラメータがstartであれば、StartService()が実行される。
    3.Launchd Daemen
    launchdは、Mac OSでシステム環境を初期化するためのキープロセスであり、カーネルロードが成功した後、OS環境で起動する最初のプロセスである。
    このように自己起動項目を設定するのは簡単で、一つのplistファイルだけが必要です。通常はplistを~/Library/LaunchAgentsパスの下に置くのです。
    3.1 plistファイルフォーマットと各フィールドの意味:

    1)Label【required】
    このサービスの名前。
    2)Ondmand【optional】
    10.4に提供される1つのkey値は、機能がKeepAliveの基本機能と似ています。10.5およびその後のシステムでKeepAliveに置き換えられます。KeepAliveはより多くの機能を拡張し、単一のbookをkey値として使用するほか、辞書を使って複数のkey値を結合することもできます。
    3)Program【Program Agmentはrequiredであり、Program Agmentがない場合はProgramというkeyを含める必要があります。】
    実行可能ファイルのパスを指定します。
    4)RunAt Load【optional】
    識別launchdは、サービスをロードした直後に経路指定の実行可能ファイルを起動する。デフォルトの値はfalseです。
    5)Working Directory【optional】
    このkeyは実行可能ファイルを開く前に、現在の作業ディレクトリのパスを指定します。
    6)Keep Alive【optional】
    このkey値は実行可能ファイルが継続的に実行されるか、それとも具体的な条件を満たしてから起動するかを制御するために使用されます。デフォルトの値はfalseです。つまり、特定の条件を満たすと起動します。設定値がtureの場合は、無条件のオープンで実行可能なファイルを示し、システム全体の運転期間に保持させます。
    3.2 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>Label</key> 
     <string>com.yourcompany.HSPA_USB_MODEM</string> 
     <key>OnDemand</key> 
     <false/> 
     <key>Program</key> 
     <string>/Application/HSPA USB MODEM.app/Running</string> 
     <key>RunAtLoad</key> 
     <true/> 
     <key>WorkingDirectory</key> 
     <string>/Application/HSPA USB MODEM.app</string> 
    </dict> 
    </plist> 
    4.3つの方式の違い
    システムの起動過程を初歩的に理解してから、これらの3つの構成のスタート項目の方式を見てみると、この3つの方式の違いが分かりやすくなります。
    全体として、LoginatitemsとStartuptItemsの違いは明らかです。
    Startuplems
    ロギンス
    Depedency Ordering
    ネed
    Do not Need
    ロードTiming
    during startup
    after a user logs in
    Launched by WHO
    by root,but not necessarly
    the user
    Process types
    background processes and processes that terminate after running
    any Mac OS X executable
    私達がカスタマイズしたLaunchd daemenについては、通常(システム推奨でもあります)は~/Library/LaunchAgentsルートの下に置いています。launchdプロセスは、ユーザーのロゴの後にロードする必要があります。このような方式とLoginnItemsの最大の違いは、起動のプロセスが異なることである。LoginnItemsはlogin windowによって起動されますが、Launchd daemenはcomp.apple.launchd.peruserによって起動されます。
    締め括りをつける
    以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考となる学習価値を持っています。質問があれば、メッセージを書いて交流してください。ありがとうございます。