在Unix和Linux系统中,管理服务是系统管理员的核心任务之一,掌握查看服务的命令对于监控系统状态、排查故障至关重要,Unix系统提供了多种命令来查看服务的运行状态、依赖关系、资源占用等信息,下面将详细介绍这些命令的使用方法和场景。

基础服务查看命令
-
ps命令
ps(Process Status)用于查看当前进程的快照,通过结合不同的选项可以筛选出服务进程。ps -ef显示所有进程的详细信息(UID、PID、PPID、CSTIME、TTY、TIME、CMD),其中CMD列通常包含服务名称或启动命令,若需查看特定服务,可使用grep过滤,如ps -ef | grep nginx。ps aux则以用户为中心显示进程,包含CPU、内存占用率(%CPU、%MEM),适合分析资源消耗。 -
systemctl命令(现代系统)
对于使用systemd的发行版(如Ubuntu 16+、CentOS 7+),systemctl是核心工具。systemctl list-units --type=service列出所有单元(Unit),包括服务的加载状态(loaded)、活动状态(active)、子状态(running)等。systemctl status 服务名(如systemctl status httpd)显示服务的详细状态、日志和进程信息。systemctl is-enabled 服务名检查服务是否开机自启。
服务状态与日志分析
-
service命令
在较旧的SysVinit系统中,service命令用于管理服务,如service --status-all列出所有服务的状态(用表示运行,表示停止),service 服务名 status查看特定服务状态,该命令在systemd系统中逐渐被systemctl取代。 -
journalctl命令
结合systemctl使用时,journalctl -u 服务名可查看服务的系统日志,如journalctl -u nginx.service --since today显示今日的Nginx日志,适合排查服务启动失败或运行异常问题。
(图片来源网络,侵删)
端口与进程关联
netstat与ss命令
服务通常监听特定端口,netstat -tuln显示所有TCP/UDP监听端口及对应进程ID(PID),通过netstat -tuln | grep :80可筛选Web服务端口。ss是netstat的替代品,速度更快,语法类似,如ss -tulnp | grep :80,-p选项显示PID和进程名。
服务依赖与树状结构
pstree命令
pstree -p以树状结构展示进程的父子关系,帮助理解服务的依赖链。pstree -p | grep httpd可查看Apache进程的父进程和子进程,判断服务是否由进程管理器(如supervisord)启动。
第三方工具
部分系统使用chkconfig(CentOS 6)管理开机自启服务,chkconfig --list列出所有服务的启动级别状态;upstart系统(如Ubuntu 14.04)则通过initctl list查看服务状态。
常用命令对比表
| 命令 | 适用系统 | 核心功能 | 示例 |
|---|---|---|---|
ps -ef |
所有Unix | 查看所有进程详情 | ps -ef \| grep mysql |
systemctl |
systemd系统 | 管理服务状态、日志、开机自启 | systemctl status sshd |
service |
SysVinit | 查看/控制服务状态 | service apache2 status |
ss -tulnp |
Linux 2.6+ | 查看监听端口及关联进程 | ss -tulnp \| grep :3306 |
journalctl |
systemd系统 | 查看服务日志 | journalctl -u docker.service |
相关问答FAQs
Q1: 如何判断服务是否正在运行?
A1: 可通过多种方式判断:
- 使用
systemctl is-active 服务名,返回active表示运行; - 使用
ps -ef | grep 服务名,若返回包含服务进程的行(注意排除grep自身),则服务运行; - 使用
netstat -tuln | grep 端口号,若端口处于监听状态(LISTEN),则服务可能运行。
Q2: 服务启动失败后如何定位问题?
A2: 可按以下步骤排查:
- 使用
systemctl status 服务名查看错误日志,重点关注Active: failed及日志中的错误信息; - 使用
journalctl -u 服务名 --no-pager查看详细日志,结合grep过滤关键词(如"error"); - 检查服务配置文件语法是否正确,如
nginx -t(Nginx)、httpd -t(Apache); - 确认资源是否充足(如内存、文件描述符),可通过
ulimit -a查看限制。

