Launchctl
2018年5月15日 - 未分類
MacOSXでは、systemdの代わりに、launchdが動作しています。launchdの設定がplistに書かれています。
plistの登録には、launchctl loadを使います。
launchctl load com.itplants.coder.plist
ここまではいいのですが、実行させる場合、launchctl startを使います。
launchctl start com.itplants.coder.plist
これは間違いです。
launchctl list com.itplants.coder
とすると、
Could not find service "com.itplants.coder.plist" in domain for
というエラーがでて動作しません。当初、何故、エラーなのか、plistの中ばかりチェックしていました。ようやく原因が分かりました。
次のようにすると正しく動作します。
launchctl start com.itplants.coder
launchctl list com.itplants.coder
{
"StandardOutPath" = "/Users/XXXX/script/Coder.err";
"LimitLoadToSessionType" = "Aqua";
"StandardErrorPath" = "/Users/XXXX/script/Coder.out";
"Label" = "com.itplants.coder";
"TimeOut" = 30;
"OnDemand" = false;
"LastExitStatus" = 0;
"PID" = 3249;
"Program" = "/Users/XXXX/src/coder/coder-base/startCoder.sh";
"ProgramArguments" = (
"/Users/XXXX/src/coder/coder-base/startCoder.sh";
);
};
分かってしまえば、理解できることなのですが、launchctl loadでは、引数がファイル名です。launchctl startでは、引数がプロセス名なのです。launchctl listも同じく、プロセス名です。プロセス名には、.plistは付きません。