上一篇
使用
systemctl status 服务名 查看 Systemd 服务的运行状态。 ,对于 SysVinit 系统,可用
service 服务名 status。 ,通用方法:
ps aux | grep 服务名 查找相关进程及其 PID。
使用 ps 命令(基础查看)
ps(Process Status)是最直接的进程查看工具,通过过滤特定关键词定位服务:
ps aux | grep <服务名>
- 参数解释:
a:显示所有用户进程u:显示进程的详细用户/资源占用x:包括未关联终端的进程(如后台服务)
- 示例(查看Nginx服务):
ps aux | grep nginx
输出解读:
root 1234 0.0 0.1 12345 6789 ? S Jan01 0:00 nginx: master process www-data 5678 0.0 0.2 23456 9876 ? S Jan01 0:05 nginx: worker process第一列为启动用户,第二列为进程ID(PID),最后一列为进程名称。
使用 systemctl 命令(Systemd系统专用)
现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)默认使用systemd管理服务:

systemctl status <服务名>.service # 查看状态及关联进程 systemctl list-units --type=service # 列出所有服务
- 示例:
systemctl status sshd.service
输出关键信息:
Active: active (running) since Tue 2025-01-01 00:00:00 UTC; 1 months 0 days ago Main PID: 1234 (sshd) Tasks: 1 (limit: 4915)直接显示进程状态、PID及日志片段。
使用 service 命令(SysVinit系统兼容)
旧版系统(如CentOS 6)或兼容脚本使用service:

service <服务名> status
- 示例:
service httpd status
输出:
httpd (pid 1234) is running...
使用 top 或 htop(实时动态监控)
top:实时显示进程资源占用(CPU、内存等)top -c # 显示完整命令 按 Shift + P 按CPU排序 | Shift + M 按内存排序
htop(需安装):增强版交互式工具sudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL htop
支持鼠标点击排序、树状展开进程层级。
通过端口反查服务进程
若知道服务端口,可用网络工具定位进程:

netstat或ss:sudo netstat -tulnp | grep :80 # 查看80端口进程 sudo ss -tulnp | grep :22 # 更高效的替代命令
-p:显示进程名和PID-l:仅监听中的端口
lsof:sudo lsof -i :3306 # 查看MySQL默认端口
使用 pgrep 快速获取进程ID
通过进程名直接查询PID:
pgrep -l nginx # 输出示例:1234 nginx
-l:同时显示进程名称-x:精确匹配进程名
️ 注意事项
- 权限问题:查看非当前用户的进程需
sudo提权。 - 进程名匹配:
grep可能包含自身命令(如grep nginx),用grep -v grep过滤:ps aux | grep nginx | grep -v grep
- 服务类型区分:
systemd系统优先用systemctl(服务名如nginx.service)- 传统系统用
service或/etc/init.d/<服务名> status
- 谨慎操作:避免随意终止进程(
kill),可能影响服务可用性。
总结建议
| 场景 | 推荐命令 |
|---|---|
| 快速检查服务状态 | systemctl status 或 service |
| 查看进程资源占用 | top、htop |
| 根据端口定位服务 | ss -tulnp、lsof -i |
| 批量管理/精确查询 | pgrep、pkill |
引用说明:
- Linux
man手册(命令行输入man ps、man systemctl查看官方文档)- IBM Developer: Linux 进程管理指南
- The Linux Documentation Project (TLDP)
- Systemd 官方文档:https://www.freedesktop.org/wiki/Software/systemd/
