質問: osx-yosemiteとelcapitanで簡単なlaunchdデーモンを動作させる方法 私はosxで起動するのは見知らぬ人ではありません。過去にいくつかのデーモンを作成しましたが、最後にmountain lionmavericksを使用しました。しかし、私はマーベリックスとエルキャピタンで最も単純なplistを動作させるのに苦労しているようです。最初に、tomcatを実行するplistをコピーし、起動時にwebsphere libertyprofileを実行するように変更しました。いくつかのエラーを見た後、私はapple自身の[サイト] [1]から次のサンプルplistを試すことにしました。以下は実行されません。<?xml version="1.0" encoding="utf-8"?> <!doctype plist public "-//apple//dtd plist 1.0//en" "http://www.apple.com/dtds/propertylist-1.0.dtd"> <plist version="1.0"> <dict> <key>label</key> <string>com.example.hello</string> <key>programarguments</key> <array> <string>hello</string> <string>world</string> </array> <key>keepalive</key> <true/> </dict> plistファイルを/ library/launchdaemonsに配置してから、plistをロードすると、コンソールに次のエラーが表示されます。 10/5/15 11:52:44.868 am com.apple.xpc.launchd [1] :( com.example.hello)このサービスは常に実行されるように定義されており、本質的に非効率的です。 10/5/15 11:52:44.869 am com.apple.xpc.launchd [1] :( com.example.hello [66956])サービスを初期化できませんでした:15a284:xpcproxy + 12644 [1472] [19011403-4854- 3ccd-9fcf-49c36302eb40]:0x2 10/5/15 11:52:44.870 am com.apple.xpc.launchd [1] :( com.example.hello)サービスは0秒間しか実行されませんでした。リスポーンを10秒押し出します。 そして、それは出力に関する限りです。 standardoutputログとstandarderrorログに書き込もうとしましたが、ログファイルが空です。この状況はヨセミテとエルキャピタンの両方で発生しているので、許可を得たものでなければならないと思いました。 -rw-r--r--1ルートホイール418oct 5 11:52 helloworld.plist ただし、アクセス許可を644および755に設定してデーモンを実行しようとしましたが、それでも同じコンソールエラーが表示されます。私は何かを見落としていますか?
回答: ご覧のとおり、_<key>keepalive</key>_はcom.apple.xpc.launchd[1]: (com.example.hello) this service is defined to be constantly running and is inherently inefficient.を出力しています。次に、その_<key>_から10秒以内にプロセスを再開するように指示します。イベントのログがないため、com.apple.xpc.launchd[1]: (com.example.hello[66956]) service could not initialize: 15a284: xpcproxy + 12644 [1472][19011403-4854-3ccd-9fcf-49c36302eb40]: 0x2が何を言っているのか100%わかりませんが、他に何も実行されていないため、元の_<key>_からイベントに抗議しているようです。それと。 _<key>_を削除するか、別のものに変更してみてください。おそらく:_<key>label</key> <string>com.example.hello</string> <key>programarguments</key> <array> <string>hello</string> <string>world</string> </array> <key>keepalive</key> <false/> _または_<key>label</key> <string>com.example.hello</string> <key>programarguments</key> <array> <string>hello</string> <string>world</string> </array> _繰り返しになりますが、100%確信はありませんが、そのようなことを試してみることをお勧めします。 osは、keepaliveノードが不要であると抗議しているので、幸運を祈ります。