Macでプロセスを見つけて停止する方法


11

MacのプロセスIDを見つけて、ポート8080で実行されているプロセスを停止するにはどうすればよいですか?

Ubuntuではこれは機能します:

ps -aux

プロセスを見つけて実行できます:

kill -9 pid

ps -aux 動作していないようでしたが、Mac OS X Lionでこれを行うにはどうすればよいですか?



3
いいえ、いいえ、いいえ、お願いしkill -9 pidます、あなたがちょうど試みた後まで使わないでくださいkill pid。多くのプロセスには、リソースの使用をクリーンアップするシグナルハンドラがあり、接続やその他のシャットダウン前タスクをクリーンに閉じます。-9で強制終了すると、プロセスはクリーンアップを実行せずにすぐに終了します。-9なしで殺すことはほとんどの場合うまくいきます。
ダグ・ハリス

回答:


16

歴史的な理由から、psのオプションは複雑で一貫性のない混乱です。OS X Lionでは、次のいずれかが機能するはずです。

ps -ax
ps -e
ps aux # this displays in a different format

私はテストに便利なUbuntuのボックスを持っていないが、それに応じないのmanページps -auxどちらかがそれを行うには正しい方法ではありません。

Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX
standards require that "ps -aux" print all processes owned by a user
named "x", as well as printing all processes that would be selected by
the -a option. If the user named "x" does not exist, this ps may
interpret the command as "ps aux" instead and print a warning. This
behavior is intended to aid in transitioning old scripts and habits. It
is fragile, subject to change, and thus should not be relied upon.


5

文字列に一致するすべてのプロセスを見つけて強制終了する場合は、Mac OSXで次を使用することもできます。

ps aux | grep <string> | awk '{print $1}' | <sudo> xargs kill -9

基本的にこれが行うことは、システムで現在実行中のすべてのプロセスを見つけ(grep)、AWKがPSコマンドで2番目の列であるPIDを取得し、最後の列がAWKから引数を取り、プロセス。

現在のユーザーにプロセスを強制終了する権限がなく、システムにSUDOアクセス権がある場合にのみ、SUDOを使用します。


3

ps -efMacでの動作はps -auxLinuxでの動作とほぼ同じだと思います。

ポート8080が使用されているPIDを取得するには: lsof -P | grep 8080

フィールドは以下にマップされます。

[mini-nevie:~] nevinwilliams% lsof -P | head -1
COMMAND     PID          USER   FD     TYPE             DEVICE  SIZE/OFF    NODE NAME

ttcp -rsポート5001でリッスンするように起動しました。

mini-nevie:~] nevinwilliams% lsof -P | grep 5001
ttcp      27999 nevinwilliams    3u    IPv4 0xb70c1f66028d6961       0t0     TCP *:5001 (LISTEN)

実際、PID 27999はttcp起動したプロセスのPIDに対応しています。


1
ps auxOS X でも(ダッシュなしで)使用できps -efます。異なる列が含まれ、異なる形式を使用します。
Lri

現在、比較するためのLinuxログインがありません。数年前、IIRC、-auxがunixの特定のフレーバーで期待される出力を提供しなかった場合、-efは... AIX、Linux、SunOSが-aux、BSD、Solarisを使用して互換性のために-efが必要でした。IRIXが-auxまたは-efであったかどうかは忘れます。私は、それぞれのシステムの主要な違いは何であったか覚えていません...
ネヴィン・ウィリアムズ

OS XのauxおよびUbuntuのauxおよび-auxは同じ形式を使用しますが、Ubuntuの-auxは開始時に警告を出力します。
Lri

1
Ahha ... SysVとBSDの実装の間の分割でした。
ネビンウィリアムズ

1

最新の状態に保つには、macOSの場合:

ps -e | grep python | awk '{print "sudo kill -9",  $1}' | sh

Linuxの場合:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.