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は付きません。

 

Translate »