web-dev-qa-db-ja.com

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

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

Ubuntuではこれはうまくいきます:

ps -aux

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

kill -9 pid

ps -aux動作しないようです。MacOS X Lionでこれを行うにはどうすればよいですか?

11
codecompleting

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

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

テストに便利なubuntuボックスはありませんが、 man page によると、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.
16
Gordon Davisson

使用する - Activity Monitor

Applications-> Utilities-> Activity Monitor

5
gadgetmo

文字列に準拠するすべてのプロセスを見つけて強制終了したい場合は、Mac OSXで以下を使用することもできます。

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

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

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

5
gagneet

Macのps -efは、Linuxのps -auxとほぼ同等だと思います。

使用中のポート8080のPIDを取得するには:lsof -P | grep 8080

フィールドは次のようにマップされます。

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

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

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

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

3
Nevin Williams

最新の状態にするには、macOSの場合:

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

Linuxの場合:

ps -ax | grep python | awk '{print "Sudo kill -9",  $1}' | sh
1
mikeyy