插件窝 干货文章 linux服务进程如何检测运行状态

linux服务进程如何检测运行状态

服务 进程 systemctl service 277    来源:    2025-05-15

在Linux系统中,检测服务进程的运行状态有多种方法,以下是常用的几种方式:


1. 使用 systemctl 命令(Systemd系统)

适用于大多数现代Linux发行版(如Ubuntu 16.04+、CentOS 7+等):

systemctl status <服务名>

输出示例: - Active: active (running) 表示服务正在运行。 - Active: inactive (dead) 表示服务已停止。 - 其他状态可能包括 failed(失败)或 activating(启动中)。

常用操作: - 启动服务:systemctl start <服务名> - 停止服务:systemctl stop <服务名> - 重启服务:systemctl restart <服务名>


2. 使用 service 命令(旧版SysVinit系统)

适用于较旧的系统或兼容性脚本:

service <服务名> status

注意: 在Systemd系统中,service 命令实际是 systemctl 的兼容性包装。


3. 通过进程名检查(通用方法)

使用 pspgrep 直接查看进程是否存在:

ps aux | grep <进程名或关键字>
# 或
pgrep -f <进程名>

示例:检查Nginx进程

ps aux | grep nginx
  • 如果输出中包含目标进程,则说明服务正在运行。

4. 检查端口占用(网络服务)

如果服务监听端口,可通过 netstatss 检查:

sudo netstat -tulnp | grep <端口或服务名>
# 或(更推荐)
sudo ss -tulnp | grep <端口或服务名>

示例:检查80端口

sudo ss -tulnp | grep :80

5. 查看服务日志

如果服务异常,可通过日志进一步诊断:

journalctl -u <服务名>      # Systemd日志
# 或
tail -f /var/log/<服务日志文件>  # 传统日志文件(如/var/log/syslog)

6. 使用 pidof 检查进程PID

pidof <进程名>
  • 返回PID则说明进程在运行,无输出则表示未运行。

常见服务状态分析

状态 含义
active (running) 服务正常运行
inactive (dead) 服务未运行
failed 服务启动失败(需查日志)
activating 服务正在启动中

自动化监控脚本示例

#!/bin/bash
SERVICE="nginx"
if systemctl is-active --quiet "$SERVICE"; then
    echo "$SERVICE is running."
else
    echo "$SERVICE is NOT running!"
    # 可选:自动启动服务
    # systemctl start "$SERVICE"
fi

根据你的系统环境选择合适的方法。如果是现代Linux发行版,优先使用 systemctl