NGINXが実行中にポート80がリッスンしていることをgrepが検出できないのはなぜですか?

NGINXが実行中にポート80がリッスンしていることをgrepが検出できないのはなぜですか?

ソフトウェア

CentOS 7.4.1708

nginx 1.12.2

私の考えでは、grepがポート80で待機しているすべてのプロセスを返すことができるようです。しかし、Nginxが表示されないので何か間違っているようです。

Nginxが実行されていることを確認するには:

$ service nginx status
Active: active (running)

しかし:

$ ps -ef | grep 80
root     280   2      0 09:50 ?        00:00:00 [kworker/u4:3]first    11288 10899  0 17:41 pts/0    00:00:00 grep --color=auto 80`

Nginxへの参照を返すべきではありませんか?基本的なメカニズムを理解しようとしていますが、何か欠けていることは確かです。とても感謝しています!

ベストアンサー1

ps他のコマンドと混同されます。ps進行状況を表示します。あなたが望むlsof

lsof -i:80

たとえば、次のように表示できます。

apache2  489     root    4u  IPv6  13547      0t0  TCP *:http (LISTEN)
apache2 5441 www-data    4u  IPv6  13547      0t0  TCP *:http (LISTEN)
apache2 5442 www-data    4u  IPv6  13547      0t0  TCP *:http (LISTEN)

ここで、pid 489、5441、および5442はポート80(HTTPTTP)でリッスンします。

またはss:

ss -lntp 'sport = :80'
State       Recv-Q Send-Q                  Local Address:Port                                   Peer Address:Port
LISTEN      0      128                                :::http                                             :::*                     users:(("apache2",pid=5442,fd=4),("apache2",pid=5441,fd=4),("apache2",pid=489,fd=4))

nginxプロセスIDがある場合は、lsofに直接渡して何が開いているのかを確認できます。たとえば、次のようになります。

lsof -p 489 | grep TCP
apache2 489 root    3u  sock    0,8      0t0 13546 protocol: TCP
apache2 489 root    4u  IPv6  13547      0t0   TCP *:http (LISTEN)

おすすめ記事