Linux ではlsof -i
、次の関数のように使用できます。
def FindProcessUsingPort(portnum):
import os
fp = os.popen("lsof -i :%s" % portnum)
lines = fp.readlines()
fp.close()
pid = None
if len(lines) >= 2:
pid = int(lines[1].split()[1])
return pid
これを理解するためのクロスプラットフォームの方法はありますか?
関連する参考資料として、プロセス ID がわかれば、psutilライブラリは非常に優れており、クロスプラットフォームの方法であらゆる種類の有用なプロセス情報を判断できます。現時点では、クロスプラットフォームで最初の部分を機能させることはできません (pid を見つける)。
スイッチに慣れていない場合lsof -i
、出力は次のようになります (ポート 1234 でリッスンする TCP ソケットを開く Python プロセスを起動した後):
$ lsof -i:1234 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 python 22380 russ 15u IPv4 4015476 0t0 TCP *:1234 (リッスン)