■MACにも、Windowsと同じように、起動と同時に立ち上がるソフトがありまして。
だいたいは、DeamonとAgentってのがそうデス。
Deamonってのは、いわゆるWindowsで言う”サービス”、
Agentってのは、常駐アプリ(?)みたいなものだと、俺は解釈しています。
じつは、仕事でまたひと悶着ありまして…。
■MAC OS X 『Leopard』でのあれこれ。
従来のMACは、 "SystemStarter"っていう部分で、起動時に走るソフトなんかを制御しているみたいなのですが、Leopardから―――正確には、OS X 10.4『Tiger』から、"Launchd”というヤツで制御しているみたいです。
この作りは、Unixとは一線を画するものらしくて、面白いんですが、いかんせん資料が少なくて泣きそうでした。
*.plist という、XML形式のファイルを特定のディレクトリに配置して制御します。
何が面白いかっていうと、ポートやファイルシステムを監視して、起動する条件をさまざまに制御できるという点。
まぁ、SystemStarterでもできるのかも知れませんが、一度理解すると、絶対にこちらのほうが分かりやすいです。
配置する場所は以下のとおり、
( Agent用plist置き場 ) : /Library/LaunchAgents/
( Daemon用plist置き場) : /Library/LaunchDaemons/
※OSが管理しているサービスなんかは/System/Library/Launch.....に格納されている。
簡単な例を書くと…
-------------------------------com.test.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.test.start</string>
<Key>Program</key> # 実行するプログラムのパス
<string>/bin/testtool/test</string>
<key>RunAtLoad</key> # 起動時に無条件で実行
<true />
</dict>
</plist>
-----------------------------------------------------------------------------------------------
本当はもうちょっと複雑です。
ポート監視だの、ファイル監視だの入れていくと悪夢のようなことに…。
まぁ、それでも、SystemStarterよりは分かりやすいかな、と思いました。
XMLですし、シェルスクリプトよりは余程…。
# SystemStarterが使えないかというとそうじゃなくて、
# Leopardでもサポートしています。
# Tigerから移行が始まったらしく、まだ過渡期なのでしょう。
# ただ、リンゴ社的には、このままLaunchdに全面的に移すつもりでしょう。
# これから、MACでDaemonとか走らせるなら、
# Launchdにしといが方が無難デス。
■トラップ
DaemonとAgentの違いをもうちょっと言うと。
Daemonは、システムレベルで実行されるもので、ROOT権限で走っています。
Agentは、ユーザーレベルで実行されるもので、ログインユーザーの権限で走っています。
まぁ、ここはよくて。
Daemonの特徴として、『GUI』を持たないという特徴があるようでして。
Daemonとして起動しているプロセスから、ダイアログなんかを表示しようとすると、
変な動作をします。
なんか、DaemonからはScreenコマンドを呼べないとかどうとか…詳しいことは知らない
んですが、そういうことらしいです\(^o^)/
今受け持っているこのプログラムを、最初に設計した人を恨みたいです(ぁ
PR
- 2008/08/04(月) 22:17|
- OS関係|
-
TrackBack: |
-
Comment:2