当 NGINX 运行时,为什么 grep 检测不到它正在侦听端口 80?

当 NGINX 运行时,为什么 grep 检测不到它正在侦听端口 80?

软件

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)

相关内容