Ubuntuシステムにhadoopをインストールしています。起動すると、ポート9000がビジーであると報告されます。

使用したもの:

netstat -nlp|grep 9000 

このようなポートが存在するかどうかを確認し、取得しました:

 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 

しかし、それを保持しているプロセスのPIDを取得するにはどうすればよいですか?

コメント

回答

Linuxでは、必要な情報を取得するには、rootまたはプロセスの所有者である必要があります。そのため、別のユーザーとして実行されているプロセスの場合、必要なもののほとんどはsudoの前に付けることです。それに加えて、最近のLinuxシステムでは、ssはこれを行うために使用するツールです。

$ sudo ss -lptn "sport = :80" State Local Address:Port Peer Address:Port LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12)) LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11)) 

あなた現在使用しているのと同じ呼び出しを使用することもできますが、sudoを忘れないでください:

$ sudo netstat -nlp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx 

lsofを使用します:

$ sudo lsof -n -i :80 | grep LISTEN nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN) 

コメント

  • 注:OSXでは、-pオプションはプロセスではなくプロトコル用です。この質問
  • @BryanPを参照してください。OPはUbuntuを求め、'ちょっと関係ありません…
  • @AdamBMacユーザーがFinding the PID of the process using a specific port
  • を検索してここに到着しない限り

  • この回答は、sudoを先頭に配置することで改善される可能性があります。
  • @MrOnyancha簡潔な(-t)オプションを使用します-lsof -ti tcp:80

回答

util性。ルートである必要があります。

# lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN) exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN) 

コメント

  • このコマンドは、

接続、listeningであるプロセスだけではありません。

  • 必ずしもルートである必要はありません。また、PIDのみを取得したい場合は、lsof -i :25 -Fpを使用できます。これによりp1234のような出力が生成されます。
  • 回答

    「CentOS7minimal」を使用しています。netstatlsof。ただし、多くのLinuxディストリビューションにはsocket statisticsコマンドがあります(つまり、ss)。

    実行例は次のとおりです。

    # ss -tanp | grep 6379 LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4)) 

    コメント

    • ss -pntl 'sport = :6379'

    回答

    fuserを使用することもできます:

    fuser -v -n tcp 22 

    出力:

     USER PID ACCESS COMMAND 22/tcp: root 598 F.... sshd 

    コメント

    • ありません'動作しない fuser -v -n tcp 80 、sudoを試してみても
    • 注:これにはsudo問題のあるプロセスもsudo
    • で開始された場合

    • これは一般的に覚えておくとよいことです。 Linuxのコマンドは通常、コマンドがSudoで実行されない限り、root / sudoによって開始されたプロセスに関する情報を提供しません'。これは、コマンドを正しく実行するために通常sudoを必要としない場合でも当てはまります。

    回答

    コマンドの実行sudoを使用すると、PIDが得られます。私の開発マシンでは、次のようになります。

    $ netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN - $ sudo netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 16449/java 

    他の回答で述べたように、ssまたはlsofコマンド。

    コメント

    • コマンドをsudoプロセスIDを表示
    • しかし、sudo netstat -nlp | grep 34157がPIDではなく-を表示する場合はどうなりますか?

    回答

    利用可能なLinuxツールのセットが限られているYoctoLinuxシステムで作業しています。なんとか見つけました次のコマンドを使用して実行中のポートのプロセス(ポート1883を使用しているプロセスを見つけます):

     root@root:~# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN tcp 0 0 localhost.localdomain:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN tcp 0 0 :::hostmon :::* LISTEN tcp 0 0 localhost:domain :::* LISTEN tcp 0 0 :::ssh :::* LISTEN tcp 0 0 :::1883 :::* LISTEN root@root:~# fuser 1883/tcp 290 root@root:~# ps | grep 290 290 mosquitt 25508 S /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 12141 root 8444 S grep 290  

    上記のように、ポート1883を使用しているのはプログラム/usr/sbin/mosquittoです。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です