再起動せずにlaunchd OS Xを再起動する方法は?


14

Zotero / Firefoxを実行すると、しばしばクラッシュし、ゾンビプロセスが残ります。この後、ZoteroまたはFirefoxの新しいインスタンスを開くことができません。再起動するのではなく、これらのゾンビプロセスを削除したいので<pid>、ゾンビプロセスについては、

$ ps -p <pid> -o ppid=

私に与えます<parent_pid>と、

ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'

親プロセスは/sbin/launchdユーザー向けであると教えてくれますcrippledlambda

システムを停止せずにこれを再起動する方法はありますか?

sudo kill -1 <parent_pid>

何もしません。私はこれをスクリプトで書いて実行しようとしましたsudo

for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done

これにより明らかに(?)灰色の画面が応答しなくなるため、とにかく再起動する必要があります。ご提案ありがとうございます。


残りのプロセス自体ではなく、launchdを強制終了するのはなぜですか?launchdはユーザーセッションの中核部分です。あなたはそれを再起動することができたとしても、新しいインスタンスは、すべての親ではないであろう他のそれは責任のプロセス...などのFinder、Dockの、のようなもの
ゴードンDavisson

@Gordon、あなたはゾンビプロセスを殺すことができないので、私が何かを逃さない限り、あなたは親の後に行かなければなりません。
-hatmatrix

それらは真のゾンビ(つまり、終了したが終了ステータスが読み取られていないプロセス)ですか?もしそうであれば、もっとlaunchdすぐに何かが間違っている、なぜなら常にその子の終了ステータスをすぐに読むべきだから 彼らが本当にゾンビでないなら、あなたは彼らを殺すべきです。どちらの場合でも、殺すことlaunchdは解決するよりも多くの問題を引き起こすでしょう。
ゴードンデイヴィソン

回答:


17

起動デーモンを停止および起動する適切な方法は、launchctl unloadです。

例えば:

launchctlのunloadサブコマンドを使用して、起動デーモンサービスを停止できます。

$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist

無効化または停止された起動デーモンを起動するには:

$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist

★起動デーモンを無秩序に無効にすることに注意してください-特に公式のAppleデーモン。セーフモードで起動して手動で再度有効にするまで、システムが起動できなくなる可能性があります。通常のプロセスのようにlaunchctlを強制終了することはありません。これは、経験したようにシステムを強制終了する可能性があるためです。

> launchctlの詳細はこちら。(Apple launchctl manページ)


申し訳ありませんが、それはありますかcom.apple.bsd.launchdadd.plistlaunchd正確にはわかりません。警告に感謝します
...-hatmatrix

将来の参照のために、これらのコマンドはでも機能しscrun simctl spawn <sim_id> sudo launchctl unload …ます。plistファイルには、下にある$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
レオナタン

3

launchdのmanページから:

launchdを直接呼び出すことはできません。

したがって、たとえそれを停止できたとしても、それを開始することはできないので、答えは方法がないということです。


1
なぜ下票なのか?私の投稿は質問に正しく答えます。他の投稿はより建設的ですが、実際には投稿のタイトルに従って実際の質問に答えることができません!
オスターガード

他の投稿は質問に答えます。
DavidPostill

2
いいえ、そうではなく、デーモン自体を起動しないでデーモンを再起動する方法を示しています。
オスターガード

3
笑-そして、その態度、正確さはもはや重要ではない、それがSOの品質のゆっくりした低下を説明しています。明けましておめでとうございます!
オスターガード

1
残念ですが、コメントを下すことはできません。この答えが正しいだけでなく、他の答えは実際に質問にまったく対処できません。これは、launchdによって起動されるデーモンに関するものではありませんが、応答しないプロセスが強制終了された場合、launchdによって継承されるゾンビプロセスです。同じ問題があり、launchdの誤った動作をトリガーするのはブラウザであるため、殺す血まみれのデーモンはありません。「何でも」と答えると、答えが有用だと思った同じ人々がそもそも質問を理解できず、それが桁違いに悪化するので、私の血が沸騰します。
SaltwaterC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.