このプロセスが終了できないのはなぜですか?


4

o

つい最近、ネットワークプログラムが既に使用されていたためにポートにバインドできないという問題に遭遇しました。アクティビティモニターを開くと、ウィンドウを閉じて、おそらく終了しているにもかかわらず、以前(「サーバー」と呼ばれる)が既に実行されていることがわかりました。プロセスのQuitまたはForce Quitは何もしません。コンピューターを再起動しましたが、まだそこにありました!これは私のプログラムではこれまで起こりませんでした。ターミナルで入力してkill 4517も何も起こりませんでした。助けて?


1
再起動後にプロセスが自動的に再び表示された場合、「何か」が自動的に再起動しました。ここではどのような「ネットワークプログラム」を見ていますか?
nohillsideの

回答:


4

OS Xは、* nixシステムのInitスクリプト、crontabなどによって提供される機能を統合するlaunchdと呼ばれるプロセス起動システムを使用します(詳細については、Wikipediaの記事、および起動デーモンとエージェントに関するAppleの開発者ドキュメントを参照してください)。launchdの機能の1つは、構成ファイルで定義されている場合、起動したプロセスを存続させることです。その場合、プロセスは終了するたびに再起動します。プロセスの問題は、リブートおよび手動終了を超えて持続するように見えますが、キーで起動されたプロセスを起動した場合とよく似ていkeepAliveます。

launchd構成ファイルはplist形式であり、

  • ~/Library/LaunchAgents –現在のユーザーアカウントのエージェントのみ
  • /Library/LaunchAgentsおよび/Library/LaunchDaemons–すべてのユーザーアカウントのエージェントとデーモン
  • /System/Library/LaunchAgentsおよび/System/Library/LaunchDaemons–システムレベルのエージェントとデーモン

通常、逆ドメイン表記(tld.domain.process.plist)で命名されます。のユーザーアカウントserverが自分のものであるかどうかによって(空白にしたとは言えません)、上記の最初の2つの場所のいずれかでplistを探す必要があります(Xcodeがインストールされている場合は、簡単にQuickLookできます) )。見つかった場合、server実際にはlaunchdによって制御されます。停止する正しい手順は、launchdのプロセスリストから削除することです。

launchctl unload <tld.domain.process>

プロセスをアンロードして停止します(plistサフィックスを省略していることに注意してください)。

処理するためのGUIもあり、launchdのファイルは、ピーター・ボルグのLingonは、手動による応援よりも便利であるかもしれない、(バニラの使用のためにダウン易しく書き直さバージョン安全である「Lingon」ではなく、「Lingon 3」を、取得することを確認してください)ファイルの場所。


2

これを試してみてください。

    sudo kill -9 4517

ここで、4517はプロセスのPIDです。

プロセスが新しいPIDで戻ってきた場合、何かが再起動しました。それに対処する方法については、kopischkeの答えをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.