在Linux系统中查看“有哪些服务器”通常指两类需求:一是查看本机运行了哪些服务程序(如Nginx、MySQL),二是查看远程服务器的硬件配置与系统信息,前者用systemctl和ss命令即可,后者用lscpu和free -h就能摸清家底。
很多朋友第一次接触Linux服务器时,面对黑乎乎的终端窗口都会犯嘀咕:我到底该怎么知道这台机器上跑了什么服务?有没有别人偷偷装的程序?硬件配置够不够用?别急,这篇文章专门解决这个问题,咱们不玩虚的,直接上命令、看输出、讲人话。
linux查看服务器上运行了哪些服务:一条命令看清所有后台进程
想知道“有哪些服务器”在跑,最直白的解释就是当前系统里有哪些守护进程,Linux下一切皆文件,服务也不例外,它们本质上是常驻内存的进程,查看它们有两个派系:老派的service --status-all和新派的systemctl。
对于大多数使用CentOS 7.9、Ubuntu 20.04及以上版本的朋友,systemctl是首选,打开终端,输入:
systemctl list-units --type=service --state=running
屏幕上会列出所有正在运行的服务单元,比如nginx.service、mysqld.service、sshd.service,每一行都包含服务名、加载状态、活动状态和描述,如果你只想看服务名,可以加个--no-pager参数避免内容被分页卡住。
查看开机自启的服务清单
有时候服务当前没运行,但开机时会自动拉起,这种“潜伏”状态同样重要,用下面的命令查看:
systemctl list-unit-files --type=service | grep enabled
输出中enabled状态的服务就是开机自启项,如果你想确认某个特定服务是否存在,比如Web服务器,直接替换名字即可:
systemctl status nginx
这条命令会告诉你服务的PID、占用内存、日志片段,如果服务不存在,系统会明确提示Unit nginx.service could not be found,这套操作逻辑覆盖了绝大多数Linux服务器场景。
linux查看服务器配置命令:几核CPU、多大内存一目了然
搞清楚跑什么服务之后,下一步自然是摸清硬件底细,这个需求通常出现在购买服务器后的验收环节,或者排查性能瓶颈的时候,在简米云、酷番云或华为云上租了一台2核4G的云服务器,到手第一件事就是验货。
先看CPU信息,lscpu命令是我的最爱,输出简洁且包含关键架构信息:
lscpu
重点看CPU(s)这一行,它显示逻辑核心数,比如显示CPU(s): 4,说明有4个逻辑核心,搭配Architecture看架构是x86_64还是ARM,想更精细地看每个核心的型号,用cat /proc/cpuinfo,但输出很长,配合grep过滤更实用:
cat /proc/cpuinfo | grep "model name" | uniq
内存方面,free -h是标准答案。-h参数自动转换为人类可读的单位:
free -h
输出里的Mem行,total列是总内存,available列是可用内存,如果available长期低于总内存的20%,说明内存吃紧。
磁盘配置则用lsblk查看块设备树状图:
lsblk
这个命令的妙处在于能看出分区挂载关系,vda1挂载在根目录上,一目了然,配合df -h查看文件系统占用率:
df -h
查看服务器操作系统版本和内核信息
买服务器时商家可能装的是Ubuntu,也可能装的是Debian,确认系统发行版和内核版本是后续安装软件的前提,用以下组合拳:
cat /etc/os-release uname -a
第一条命令显示发行版名称和版本号,比如CentOS Linux 7 (Core),第二条显示内核版本、主机名、架构,行业共识认为,掌握这三板斧systemctl查服务、lscpu+free查资源、cat /etc/os-release查系统就能应对90%的服务器信息查看需求。
linux有哪些服务器软件:常见服务类型与识别方法
如果说前面的操作是“查看本机服务”,那么很多新手真正想问的是:Linux生态里到底有哪些服务器软件可以装? 这个问题在选购服务器软件栈时特别常见,业内专家指出,一个典型的Web应用服务器,通常由四类角色组成。
Web服务器:Nginx与Apache的江湖
Nginx以高并发和低内存占用著称,静态文件处理能力极强,Apache则胜在模块丰富和配置灵活,查看本机装了哪个Web服务器,直接用nginx -v或httpd -v,有版本输出就说明已安装,如果你登录服务器后发现80端口被占用,可以用下面这条命令反查:
ss -tlnp | grep :80
输出的process列会直接告诉你哪个进程占用了80端口,比如users:(("nginx",pid=1234,fd=8))。
数据库服务器:MySQL、PostgreSQL与Redis
数据库是服务器的灵魂,MySQL/MariaDB是互联网行业的主流选择,PostgreSQL在复杂查询和地理信息处理上更胜一筹,Redis则作为缓存数据库扛起高并发大旗,查看方法很朴素:
mysql --version redis-cli --version psql --version
有输出就代表装了,想确认是否在运行,回到第一部分的systemctl status mysqld即可。
其他常见服务器角色
- Samba服务器:用于Linux与Windows之间的文件共享,服务名
smbd。 - FTP服务器:vsftpd是经典选择,服务名
vsftpd。 - 邮件服务器:Postfix发送邮件,Dovecot接收邮件,两者常配套出现。
- DNS服务器:Bind提供域名解析服务,服务名
named。
linux查看服务器端口:快速定位服务监听状态
服务跑没跑,端口是最诚实的证据,有些服务进程活着但端口没监听,等于白搭,查看端口监听情况,ss命令是netstat的现代替代品,输出更快更准确:
ss -tlnp
-t只看TCP连接-l只显示监听套接字-n显示数字端口而非服务名-p显示进程信息(需要root权限)
这个命令的输出非常直观,比如你看到0.0.0:3306,结合前面的知识,就能猜到是MySQL在监听,如果你用的是较老的CentOS 6系统,ss可能不可用,那就用netstat -tlnp替代,从安全角度讲,排查服务器上有哪些开放端口,是防止被入侵的必修课。
linux查看服务器时间:不容忽视的基础操作
服务器时间如果偏差超过几分钟,会导致日志时间戳错乱、定时任务乱执行、HTTPS证书验证失败,查看当前时间用date命令,但更要紧的是查看硬件时间和时区:
date timedatectl
timedatectl的输出会告诉你Local time、Universal time、Time zone以及System clock synchronized的状态,如果你发现服务器时间不对,且System clock synchronized: no,说明NTP同步有问题,手动同步可以用:
ntpdate -u ntp.aliyun.com
注意,这个命令在部分新系统上需要先安装ntpdate软件包,更推荐的做法是使用chrony服务,它已经成为CentOS 8及以上版本默认的时间同步方案。
linux查看服务器性能:实时负载与历史占用
排查服务器是不是被榨干了,top命令是经典的实时监控工具,输入top后,第一行load average显示1分钟、5分钟、15分钟的平均负载,如果15分钟负载高于CPU核心数,说明系统长期过载,按q退出。
比top更美观的是htop,但需要额外安装,想看历史性能数据,sar命令是幕后英雄:
sar -u 1 3
这表示每隔1秒采样一次CPU使用率,共采样3次。sar数据默认可能没开启,需要安装sysstat包,对于云服务器用户,简米云和酷番云的控制台都自带监控图表,但那种粒度有时不够细,还是命令行来得直接。
服务器信息查看常见问题解答
为什么systemctl和ps查出来的服务数量不一样?
systemctl list-units --type=service只显示systemd管理的服务,而ps -ef会列出所有进程,包括内核线程、用户进程以及非systemd启动的进程,比如你用./app手动启动的程序,systemctl查不到很正常,但ps一定能看到,两个命令是互补关系,怀疑有异常程序时优先用ps -ef全量筛查。
查看服务器配置时,云服务器和物理机有区别吗?
完全没有区别,无论是简米云ECS还是物理裸机,lscpu、free -h、lsblk读取的都是内核暴露的硬件信息,唯一的区别是云服务器可能存在超卖,比如你买了2核4G,但实际计算性能可能略低于物理机的同规格CPU,不过这属于性能问题,不属于信息查看范畴。
如何在不开终端的情况下查看服务器服务?
不开终端就得靠面板工具,宝塔面板的“软件商店”页面会列出已安装的Nginx、MySQL、PHP等服务及其运行状态,这是可视化层面的答案,但底层调用的还是systemctl和ss命令,对于生产环境,建议还是掌握命令行操作,毕竟面板本身也可能出故障。
查看Linux服务器上的服务与配置,说到底就是几个命令的组合运用。systemctl查运行状态,ss查端口监听,lscpu和free查硬件资源,timedatectl查时间同步,把这五个命令记牢,无论是验收新机器还是排查老机器故障,你都能做到心里有底,无论服务器是拿来跑网站、搭数据库还是做文件共享,这些命令都是通用的基本功,下次登录服务器,先跑一遍systemctl list-units --type=service --state=running,看看这台机器到底在忙什么。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/788636.html

