服务器运行服务查看指南,三大排查技巧,快速定位方案,高效服务器运行服务问题排查与快速定位指南
刚接手服务器时,看着黑乎乎的终端界面是不是有点懵?这机器到底在跑什么服务?别慌,今天就用运维老鸟的实战经验,手把手教你三招揪出所有隐藏服务,连端口带进程全给它扒出来!
一、基础四连击:快速锁定运行中服务
为什么先查这四项? 就像查房先看水电表,它们直接反映服务器实时状态
揪进程:终端输入
ps aux | grep -v "["
- 关键点:过滤内核线程(带方括号的),只看用户级进程
- 示例:见到
nginx: worker process
就是Web服务在跑
抓端口:执行
netstat -tulnp
或ss -tulnp
- 黄金规律:
0.0.0.0:80
表示全网卡监听,127.0.0.1:3306
只允许本机访问 - 避坑:若显示
tcp6
但无IPv4端口?其实是双栈支持,不影响访问
- 黄金规律:
看服务状态:
- Linux用
systemctl list-units --type=service --all
- Windows按
Win+R
输入services.msc
血泪教训:某次漏查
crond
服务状态,导致定时备份脚本瘫痪- Linux用
翻开机自启:
- Linux:
systemctl list-unit-files | grep enabled
- Windows:
msconfig
→ 「服务」选项卡
- Linux:
二、深度追踪:揪出隐藏服务的三板斧
▷ 场景1:手动安装的服务去哪找?
重点盯防目录:
/usr/local/
→ 编译安装的软件聚集地/opt/
→ 大型商业软件最爱藏这儿~/.config/
→ 用户级服务的配置文件老巢
实战命令:
find / -name "*.service" 2>/dev/null
扫描所有服务单元文件
▷ 场景2:容器化服务怎么查?
两条命令全搞定:
bash复制docker ps -a # 显示所有容器(含已停止的)podman ps -a # 无守护进程的轻量容器
关键指标:看 STATUS
列是否为 Up
,PORTS
列映射关系
▷ 场景3:定时任务关联服务
排查组合拳:
- 查系统级任务:
ls -lh /etc/cron.*
- 扫用户级任务:
for u in $(cut -d: -f1 /etc/passwd); do crontab -u $u -l 2>/dev/null; done
- 关联进程:找到脚本路径 →
lsof | grep 脚本名
三、工具进阶:专业选手的监控利器
▷ 基础版:系统自带神器
工具 | 命令示例 | 核心作用 |
---|---|---|
lsof | lsof -i :8080 | 查端口占用进程 |
top | top -c -u mysql | 实时追踪某用户进程资源消耗 |
journalctl | journalctl -u nginx --since "1 hour ago" | 查服务最近日志 |
▷ 进阶版:监控平台实战
- Zabbix:画性能曲线图,CPU突增立刻告警
- Prometheus+Grafana:监控容器微服务生态链
- Nagios:服务停摆自动短信轰炸
真实案例:某电商用Zabbix监控到Redis内存泄漏,提前扩容避免大促崩溃
四、高频踩坑急救手册
Q:查端口发现大量TIME_WAIT
连接?
→ 典型服务端未释放连接,快速解决:
bash复制sysctl -w net.ipv4.tcp_tw_reuse=1 # 允许复用TIME_WAIT套接字sysctl -w net.ipv4.tcp_fin_timeout=30 # 缩短FIN等待时间
Q:进程还在但服务无响应?
→ 三步诊断:
strace -p 进程PID
看系统调用卡在哪ss -s
检查全连接队列是否溢出dmesg -T
查内核有否OOM击杀记录
Q:如何区分系统服务与业务服务?
→ 记住特征前缀:
- 系统服务:
rsyslog
(日志)、irqbalance
(中断优化) - 业务服务:
tomcat
、jenkins
、your_app
(自定义名称)
干了八年运维,最深的体会是:服务器服务不是独立零件,而是咬合的齿轮组。查服务时永远记住三条铁律:
- 进程是血肉,端口是关节,日志是病历——三者必须联动分析
- 手动安装的服务就像野孩子,不给它做systemd托管迟早出事
- 监控平台不是摆设,它是你睡觉时的守夜人
毕竟啊,服务器这玩意儿,你糊弄它一时,它报复你通宵。