IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Mac の launchctl ってなんだ?

man lauchctl

launchctl interfaces with launchd to load, unload daemons/agents and gen-erally generally
erally control launchd. launchctl supports taking subcommands on the command line, interactively or even redirected from standard input. These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf to be read at the time launchd starts.

API Reference: Mac OS X Manual Pages

頑張って訳す iknow の成果を見せてやる><

launchctl は launchd にデーモンやエージェントを load, unload したり launchd を制御したりするインタフェースです。launchctl には、サブコマンドをコマンドラインから対話的に与えたり、リダイレクトで与えたりすることもできます。これらのサブコマンドは、 launchd 開始時に読み込むように ~/.launchd.conf や /etc/launchd.conf に書く事も出来ます。

launchd 開始時に読み込ませる為にが分からない。

man launchd.conf

launchd.conf contains a list of subcommands (one per line) to run via launchctl when launchd starts. For a list of possible subcommands, see the manual page for launchd(8).

API Reference: Mac OS X Manual Pages

launchd.confには,launchd起動時にlaunchctlによって(launchctl経由で)実行するサブコマンドのリスト(1コマンド毎に改行して)を格納します.
記述可能なサブコマンドを知りたい場合は man launchd してください。

man launchd

launchd manages processes, both for the system as a whole (daemons) and for individual users (agents). The primary and preferred interface to launchd is via the launchctl(1) tool which (among other options) allows the user or administrator to load and unload jobs. Where possible, it is preferable for jobs to launch on demand based on criteria specified in
their respective configuration files.

API Reference: Mac OS X Manual Pages

launchd は全システム(デーモン)または、特定ユーザ(エージェント)のプロセスを管理します。一番好ましい使用方法は、 launchctl を使うことです。可能ならオンデマンドに起動したいジョブは、各ユーザの定義した launchd.conf ファイルを基準として使ったほうがいいです。

なるほどーん、プロセスを管理するためのものなのね

ということで

launchctl はこうやって使うみたい
以下のような hoge.plist を用意。この場合は /usr/bin/hoge --hoge piyo を hoge と言う名前で launchd の管理ジョブに追加するという意味

<?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>hoge</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hoge</string>
        <string>--hoge</string>
        <string>piyo</string>
    </array>
</dict>
</plist>

この plist の仕様は以下
API Reference: Mac OS X Manual Pages
で、以下で /usr/bin/hoge --hoge piyo が起動される

$ launchctl load hoge.plist

で、以下でそのユーザが起動しているジョブ一覧が見える

$ launchctl list
hoge
$ sudo launchctl list
:
:

で、以下でジョブ停止

$ launchctl unload hoge.plist

なるほどなるほど

(追記) 素晴らしいまとめがありました

maruko2 Note.