5

OSXでは、launchctlを使用してサービスを開始および停止するのは素晴らしいようですが、戻り値をチェックして実際に開始したことを確認する方法がわかりません。サービスの開始に失敗した場合でも、戻り値は常にゼロとして返されるようです

この plist ファイルにはエラーが含まれているため、Drizzle が期待どおりに起動しません

% launchctl start /Library/LaunchDaemons/org.drizzlebad.plist

% echo $?

0

このサービスの pid ファイルの存在を確認する以外に何か提案はありますか?

4

2 に答える 2

10

launchctl成功した場合にのみ 0 を返すため、何か間違ったことをしているに違いありません。

$ launchctl start foobar
launchctl start error: No such process
$ echo $?
1

また、launchctl startplist へのパスではなく、役職 (通常は逆 DNS スタイルの名前) を取ります。それは plist パスをとりますlaunchctl loadunload

うまくいかないと主張する場合はlaunchctl list、ジョブ名の出力を grep して、必要に応じてフィールドを解析してみてください。

于 2010-11-02T18:44:45.210 に答える
1

ターミナルからa を実行するlaunchctl listと、2 番目の列に... ほとんどが 0 と - のリストがあります... プログラムが誤って終了した場合、その 2 番目の列に終了コードが表示されます。 ....通常は-1または-251、またはどのような場合でも...覚えておいてください...launchdアイテムがクラッシュした可能性があります... launchctlはまだ熱狂的に「それを機能させようとしている可能性があります" - 10 秒ごとに ..... したがって、中断した launchd プロセスを永遠に放置しないでください。パフォーマンスに影響を与えることは間違いありません..

-w.... と plist へのフル パスを使用してアンロードするか、少なくともバンドル識別子を使用して停止 (およびオプションで削除) します。-w は、/var/db/launchd フォルダーの plist に秘密のエントリを作成し、次回のマシンの起動時にそれをロードしないようにカーネルに指示します..「有効な」XML エントリが plist で何を言っているかに関係なく.. ..そのため、次回の起動時にアイテムが復活するかどうかについては、そのフラグ以上のものがあることに注意してください...

必要に応じて、そのoverrides.plistファイルをtat varフォルダーの奥深くにバックアップし、時間の経過とともにロードとアンロードが複雑になりすぎた場合は最初からやり直すことができます...他の方法もありますが、黙りますさて..ついでに、コンピュータを完全にホース接続する方法を説明する前に...

于 2011-07-11T20:34:14.697 に答える