検索
連載

第2回 initを置き換えるlaunchd【後編】Undocumented Mac OS X(2/3 ページ)

UNIX使いに真のMACPOWERを! 本連載では、UNIX使いに向け、UNIX系OSとしてのMac OS Xを解説していく。前回に引き続き、launchdの設定の詳細のほか、launchdの内部構造について踏み込んでいこう。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

そのほかの使い道

 また、このQueueDirectoriesは、postfixのスプールのような本来の利用法以外にも使い道はある。リスト2は同じくシステムドメインに配置されているcom.vix.cron.plistだ。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

リスト2 /System/Library/LaunchDaemonscom.vix.cron.plist

 このリスト2では、WatchPathsで/etc/crontabを、QueueDirectoriesで/var/cron/tabsディレクトリを監視するように指定されている。Tigerのインストール直後/etc/crontabには何の設定もされておらず*、/var/cron/tabsも空になっている。しかし、crontabファイルを編集したりcrontab(1)コマンドで/var/cron/tabs以下にユーザーごとのcrontabが登録されると、launchdはcronを起動し、それらの処理を任せる。こうすることで、従来からのUNIXユーザーや開発者がcrontabを使ったソフトウェアを使用しても何ら問題ないようにできている。xinetdについても同じような設定がなされており、/etc/xinetd.d/に設定ファイルを追加するだけで自動的にxinetdが起動するようになっている。

 QueueDirectoriesを活用することで、launchdはこうした過去との互換性も維持しているのだ。

serviceコマンド

 互換性が確保されているのは、QueueDirectoriesだけではない。/sbin/serviceというコマンドもそれに当たる。Mac OS Xの/sbin/serviceコマンドは、Linuxの/sbin/serviceと/sbin/chkconfigを足して2で割ったようなもので、バックグラウンドで動作するサービスの起動や終了を指示したり、サービスの一覧を表示するなどの機能を持つ。このコマンドの実態はシェルスクリプトで、xinetdの設定とLaunchDaemonsディレクトリの双方をチェックし、指定の動作を行う。Linuxから移行してきたユーザーにとっては、このコマンドはlaunchctlのようなコマンドよりも扱いやすいだろう。

launchctlコマンド

 launchctlは、launchdのフロントエンドとなるコマンドである。使い方は2つあり、その1つは引数なしにlaunchdを実行することだ。そうすると、「launch%」というプロンプトが表示される。ここで、表1にあるサブコマンドを入力すると、各種機能を対話的に操作できる。もう1つの利用法は、launchctlに続けてサブコマンドおよびその引数を指定し非対話的な操作を行うことだ(リスト3)

表1
表1 Serviceコマコマンドのサブコマンド

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

リスト3 launchctlに続けてサブコマンドやその引数を指定し、非対称的な操作を行うこともできる

 なお、launchctlが接続するのは、実行したユーザーと同じuidで動作するlaunchdだ。つまり、PID 1のlaunchdと接続するには、root権限でlaunchctlを実行させなければならない。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

このページで出てきた専門用語

Tigerのインストール直後/etc/crontabには何の設定もされておらず

アップグレードインストールをした場合場合はこの限りではない。


関連キーワード

UNIX | Mac | Mac OS X | API | BSD


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る