在Linux服务器上查看“安装了什么”,核心是使用对应发行版的包管理器命令,比如RPM系用rpm -qa、Debian系用dpkg -l,再结合systemctl、ss等命令查看运行中的服务与端口,如果你搜的是“linux查看服务器安卓了什么”,大概率是“安装”的笔误,下面按真实运维场景展开。
linux查看服务器安装了什么软件?先分清安装来源
Linux装软件不像Windows那样有统一的“程序和功能”面板,同一台服务器上,软件可能来自包管理器、源码编译、二进制压缩包,甚至容器镜像,业内专家指出,生产环境多数软件仍以包管理器安装为主,但手工部署的组件往往藏在/usr/local或/opt下。
包管理器是主要入口
不同发行版对应不同包管理器,这是查看已安装软件的第一站。
- RPM系:CentOS、RHEL、Fedora、Rocky、AlmaLinux,使用
rpm、yum、dnf - Debian系:Ubuntu、Debian,使用
dpkg、apt - 其他:Arch Linux用
pacman -Q,openSUSE用zypper se --installed-only
源码编译和二进制包容易被漏掉
包管理器查不到,不代表服务器没装,以下位置需要手动检查:
/usr/local/bin、/usr/local/sbin/usr/local/etc、/usr/local/lib/opt目录下的商业软件或独立应用- 容器环境中的镜像和容器
centos查看已安装软件命令:RPM系实操
CentOS是很多企业服务器的默认选择,要查它装了什么,rpm -qa是最直接的命令。
基础命令速查
rpm -qa:列出所有已安装的RPM包rpm -qa | grep nginx:筛选特定软件rpm -q nginx:查询nginx是否安装,并显示版本rpm -ql nginx:列出该包安装的所有文件路径rpm -qi nginx
:查看包的版本、安装时间、厂商等信息
rpm -qa --last:按安装时间倒序排列,最近装的排前面yum list installed:以yum视角列出已安装包dnf list installed:CentOS 8及以上推荐使用
查看安装历史
想确认某个软件是什么时候、通过什么方式装的,可以查历史记录:
yum history listdnf history listgrep "install" /var/log/yum.log- 注意:直接用
rpm -ivh安装的包,不会出现在yum history中
RPM系命令对比
| 命令 | 作用 | 适用场景 |
|---|---|---|
rpm -qa |
列出所有包 | 快速盘点 |
rpm -q 包名 |
查特定包 | 确认是否安装 |
rpm -ql 包名 |
查文件列表 | 找安装路径 |
yum list installed |
列出已装包 | 带仓库信息 |
dnf list installed |
同上,新版本 | CentOS 8+ |
ubuntu查看已安装软件列表:Debian系实操
Ubuntu和Debian用dpkg管理软件包。dpkg -l会输出一长串列表,每行开头的ii表示已正确安装。
dpkg与apt命令
dpkg -l:列出所有包,信息较详细dpkg -l | grep nginx:筛选nginx相关包dpkg -s nginx:查看包状态和版本dpkg -L nginx:列出包安装的文件apt list --installed:更简洁的已安装列表apt list --installed | grep nginx:筛选特定软件
查看安装日志
Ubuntu下安装记录主要看两个文件:
/var/log/dpkg.log:记录包的安装、升级、移除/var/log/apt/history.log
:记录apt操作历史
- 用
grep " install " /var/log/dpkg.log可以筛选安装动作
只输出包名
如果只想拿到干净的包名列表,可以配合awk:
dpkg -l | awk '$1=="ii"{print $2}'apt list --installed 2>/dev/null | tail -n +2 | cut -d/ -f1
linux查看服务器安装的服务:从systemd到端口监听
知道装了哪些包,不等于知道哪些服务在跑,服务层面要分开看:已安装、已启动、开机自启。
systemd服务列表
现代Linux基本都用systemd管理服务:
systemctl list-unit-files --type=service:列出所有服务单元systemctl list-units --type=service --state=running:只看正在运行的systemctl list-units --type=service --state=enabled:只看开机自启的service --status-all:老系统或兼容场景可用
端口和进程视角
服务最终会体现为进程和端口,这两个命令很实用:
ss -tulnp:查看TCP/UDP监听端口及对应进程netstat -tulnp:需要安装net-tools,老习惯可用lsof -i -P -n:查看网络连接与进程ps aux | grep 服务名:确认进程是否存在systemctl status 服务名:查看单个服务状态
开机自启检查
systemctl list-unit-files --state=enabled- 老系统可查
/etc/rc.d/rc.d或使用chkconfig --list
linux怎么查看服务器已安装的软件?进阶场景与避坑
实际运维中,总会遇到包管理器查不到的情况,下面这些场景很常见。
源码编译软件怎么查
源码编译的软件不会进入RPM或dpkg数据库,可以这样找:
- 检查
/usr/local/bin和/usr/local/sbin - 检查
/opt目录 - 用
find / -name "软件名" 2>/dev/null
搜索可执行文件
- 查看
echo $PATH,确认自定义路径 - 检查
/usr/local/etc下的配置文件
容器和虚拟化环境
如果服务器跑了Docker或Kubernetes,宿主机包管理器看不到容器内的软件:
docker ps -a:查看所有容器docker images:查看所有镜像podman ps -a:Podman环境同理kubectl get pods --all-namespaces:K8s集群查看Pod
脚本化快速盘点
可以写一个简单循环,检查常用命令是否存在:
for cmd in nginx mysql redis php python3; do which $cmd; done- 输出结果为空,说明该命令不在PATH中,但不代表没装,可能路径未加入环境变量
常见误区
- 只看
/usr/bin不够,软件可能装在/usr/local或/opt - 包管理器查不到不等于没装,源码编译和容器是盲区
snap和flatpak在服务器上较少,但桌面版Ubuntu可能用到- 商业软件常放在
/opt/软件名,需要单独检查
关于linux查看服务器安装了什么软件的Q&A
Q1:为什么rpm -qa查不到我刚安装的软件?
可能通过源码编译、二进制包或容器方式安装,检查/usr/local、/opt目录,或用which 软件名确认可执行文件是否在PATH中。
Q2:linux查看服务器安装的服务时,如何判断哪些是自启动?
使用systemctl list-unit-files --state=enabled查看,老系统可检查/etc/rc.d/rc.d目录,或运行chkconfig --list。
Q3:有没有一条命令能列出所有已安装软件?
没有通用命令,RPM系用rpm -qa,Debian系用dpkg -l,再结合systemctl和ss查看服务与端口,行业共识认为,组合命令才能覆盖完整视图。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/877480.html


评论列表(1条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是系用部分,给了我很多新的思路。感谢分享这么好的内容!