Nginx 装完忘了装在哪?本文用 which、whereis、find、locate、dpkg 五类方法在 Ubuntu 24.04 实测,并给出适用场景与回滚建议。
先看 which 和 whereis
which nginx
whereis nginx
which 只返回 PATH 里第一个可执行文件;whereis 还会把配置目录和 man 页一起列出来。实测 nginx 时两者结果不同,前者只给 /usr/sbin/nginx,后者还带出了 /etc/nginx 与 /usr/share/man/man8/nginx.8.gz [3][4]。
用 find 全盘搜
sudo find / -name nginx -type f 2>/dev/null
find 不依赖索引,实时遍历文件系统。缺点是慢,而且输出很多无关项,建议加 -type f 和路径裁剪 [7]。
用 locate 快速定位
sudo updatedb
locate nginx | grep -E '^/usr/.*nginx$'
locate 基于数据库,速度远快于 find。首次使用要先跑 updatedb 建库;数据库默认每天更新一次 [5][6]。
用 dpkg 查包内文件
dpkg -L nginx | grep -E 'sbin/nginx|/etc/nginx|/var/log/nginx'
RPM 系换 rpm -ql nginx。这个方法直接告诉你包装了哪些路径,最接近“真相” [2]。
常见路径与默认目录
| 路径 | 用途 |
|---|---|
/usr/sbin/nginx |
主程序 |
/etc/nginx |
配置目录 |
/var/log/nginx |
日志目录 |
/usr/share/nginx |
静态资源 |
如果你不是从系统包安装的,上述路径可能被覆盖到 /usr/local 或自定义前缀 [1]。
排错速查
| 现象 | 原因 | 处理 |
|---|---|---|
which nginx 无结果 |
不在当前 PATH,或未安装 | 用 find / -name nginx 全盘搜 |
whereis nginx 只有 man 页 |
二进制路径被移走或链接失效 | 检查软链接与 systemd 服务文件 |
locate 找不到刚装的 nginx |
数据库还没更新 | 手动跑 updatedb 再查 |
dpkg -L 报未安装 |
源码编译或二进制包安装 | 改用 find 或检查自定义前缀 |
局限:WSL 与容器里路径和宿主不同,命令能跑但结果不能直接套用宿主机。
参考资料
- [1] nginx-docs(nginx-docs)
- [2] nginx-install(nginx-install)
- [3] which-man(which-man)
- [4] whereis-man(whereis-man)
- [5] locate-man(locate-man)
- [6] updatedb-man(updatedb-man)
- [7] find-man(find-man)
文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。