如何快速检查Linux系统中所有服务的状态?
1. 使用systemctl命令(Systemd系统)
对于基于Systemd的Linux发行版(如Ubuntu 16.04+、CentOS 7+),可通过以下命令列出所有服务状态:
systemctl list-units --type=service --all
过滤运行中的服务:
systemctl list-units --type=service --state=running
2. 通过service命令(SysVinit系统)
在传统SysVinit系统中,使用service --status-all
显示所有服务状态:
service --status-all
结合管道符筛选结果:
service --status-all | grep -E '[ + ]'
3. 检查服务启动配置
使用chkconfig
查看服务在不同运行级别的启用状态:
chkconfig --list
对于Systemd系统,查看服务是否开机启动:
systemctl list-unit-files --type=service | grep enabled
4. 结合进程监控工具
使用ps
命令查看所有正在运行的进程:
ps aux | grep -E '^USER|systemd|init'
通过top
或htop
实时监控服务资源占用情况。
5. 自动化脚本示例
创建脚本批量检查服务状态(Systemd系统):
#!/bin/bash
for service in $(systemctl list-units --type=service --no-legend | awk '{print $1}')
do
echo "检查服务: $service"
systemctl status $service | grep -E 'Active:|Loaded:'
done
注意事项
- 部分命令需要root权限,可使用
sudo
- 不同Linux发行版的服务管理工具可能不同
- 建议结合日志分析(
journalctl
)进行深度排查