使用 systemctl
命令(推荐)
适用系统:基于 systemd
的现代发行版(如 Ubuntu 16.04+、CentOS 7+)
命令格式:
systemctl status <服务名>
输出解读:
Active: active (running)
:服务已启动。Active: inactive (dead)
:服务未运行。Loaded: loaded (...)
:服务已启用开机自启。Loaded: disabled (...)
:服务未设置开机自启。
示例:
systemctl status nginx# Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) # Active: active (running) since Tue 2025-10-10 09:00:00 UTC; 2h ago
使用 service
命令(传统SysVinit系统)
适用系统:旧版Linux(如 Ubuntu 14.04 或 CentOS 6)
命令格式:
service <服务名> status
输出解读:
[ + ] 服务名
:服务正在运行( 表示正常)。[ - ] 服务名
:服务未运行。
示例:
service apache2 status # 输出示例: [ + ] apache2 is running.
使用 ps
命令检查进程
直接查看服务进程是否存在:
ps aux | grep <服务名或进程关键词>
示例:
ps aux | grep mysql # 若输出包含类似 `/usr/sbin/mysqld` 的进程,则服务已启动。
技巧:
- 结合
grep -v grep
排除干扰:ps aux | grep nginx | grep -v grep
检查端口监听(网络服务)
通过端口验证服务是否在运行:
# 使用 netstat(需安装 net-tools) netstat -tuln | grep <端口号> # 使用 ss(推荐,更高效) ss -tuln | grep <端口号>
示例:
ss -tuln | grep 22 # 输出:tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* → SSH服务已启动
查看服务日志
日志是诊断服务状态的金标准:
# 使用 journalctl(systemd系统) journalctl -u <服务名> --since "10 min ago" # 传统日志路径 tail -f /var/log/<服务名>.log # 如 /var/log/nginx/error.log
日志关键信息:
"started"
、"listening"
→ 服务正常启动。"failed"
、"error"
→ 启动异常。
其他辅助命令
- 检查开机自启配置:
systemctl is-enabled <服务名> # 输出 "enabled" 表示开机自启
- 测试服务响应(如HTTP服务):
curl -I http://localhost:80 # 返回 HTTP 200 表示服务正常
总结与建议
场景 | 推荐命令 |
---|---|
现代Linux系统 | systemctl status |
旧版系统 | service status |
验证进程是否存在 | ps aux \| grep |
网络服务端口监听 | ss -tuln |
诊断启动失败原因 | journalctl -u |
最佳实践:
- 优先使用
systemctl status
,信息最全面。 - 端口监听(
ss
/netstat
)适合验证网络服务。 - 日志分析是排查故障的终极手段。
引用说明:
- 基于 Linux 官方文档(systemd.unit(5))及常用系统管理实践。
- 命令兼容性参考 Ubuntu、CentOS 及 Arch Linux 官方手册。
- 安全建议遵循 Linux 基金会最佳实践指南。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9251.html