Macのポート8080で実行されているプロセスIDを見つけて停止するにはどうすればよいですか?
Ubuntuではこれはうまくいきます:
ps -aux
プロセスを見つけて実行できます:
kill -9 pid
ps -aux
動作しないようです。MacOS X Lionでこれを行うにはどうすればよいですか?
歴史的な理由から、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.
使用する - Activity Monitor
。
Applications
-> Utilities
-> Activity Monitor
文字列に準拠するすべてのプロセスを見つけて強制終了したい場合は、Mac OSXで以下を使用することもできます。
ps aux | grep <string> | awk '{print $1}' | <Sudo> xargs kill -9
基本的にこれが行うことは、システムで現在実行中のすべてのプロセスがと一致する(grep)ことです。AWKはPIDを取得します。これはPSコマンドの2番目の列であり、最後の1つはAWKから引数を取り、プロセス。
Sudoを使用するのは、現在のユーザーにプロセスを強制終了する権限がなく、システムにSudoアクセス権がある場合のみです。
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に対応しています。
最新の状態にするには、macOSの場合:
ps -e | grep python | awk '{print "Sudo kill -9", $1}' | sh
Linuxの場合:
ps -ax | grep python | awk '{print "Sudo kill -9", $1}' | sh