Linux如何查看当前正在运行的服务?

在Linux系统中,服务是后台运行的关键程序,负责提供特定功能(如Web服务、数据库服务等),查看正在运行的服务是系统运维、故障排查和性能优化的基础操作,本文将详细介绍多种查看Linux运行服务的方法,涵盖常用命令、系统工具及实际应用场景,帮助用户全面掌握服务状态监控技巧。

linux如何查看正在运行的服务

通过systemctl命令查看服务状态(systemd系统)

现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)广泛采用systemd作为初始化系统,systemctl是管理服务的核心命令,通过它可以查看所有服务的运行状态、启用状态及详细信息。

基本语法与常用选项

systemctl [选项] [命令] [服务名]

常用选项包括:

  • --all-a:显示所有服务(包括未运行的)
  • --state=:按状态过滤(如runninginactivefailed
  • --type=service:仅显示服务类型(排除socket、target等)
  • -l--full:显示完整日志(不截断)

示例操作

  1. 查看所有正在运行的服务

    systemctl list-units --type=service --state=running

    输出结果包括服务名、加载状态(loaded)、活动状态(active)、子进程状态(running)、主PID等信息,

    UNIT             LOAD   ACTIVE SUB     DESCRIPTION
    sshd.service     loaded active running OpenBSD Secure Shell server
    nginx.service    loaded active running The NGINX HTTP and reverse proxy server
  2. 查看特定服务的状态

    systemctl status nginx

    输出会显示服务的详细状态,包括是否运行、启动时间、进程ID及最近的日志摘要(用表示运行,表示停止)。

  3. 检查服务是否处于活动状态

    systemctl is-active nginx

    若服务正在运行,返回active;否则返回inactivefailed

通过service命令查看服务状态(兼容SysVinit)

对于较老的Linux系统(如CentOS 6、Ubuntu 14.04)或兼容SysVinit的systemd系统,service命令可管理服务,语法简单直观。

基本语法

service 服务名 [选项]

常用选项:

  • status:查看服务状态
  • start/stop/restart:启动/停止/重启服务

示例操作

service apache2 status  # 查看Apache服务状态
service sshd restart    # 重启SSH服务

输出结果会直接显示服务是否运行,

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...; ... ago

注意:service命令本质上是调用/etc/init.d/下的服务脚本,在systemd系统中可能部分功能受限,建议优先使用systemctl

linux如何查看正在运行的服务

通过ps和top命令查看进程级服务

服务本质上是后台进程,通过ps(静态查看)和top(动态监控)可从进程角度确认服务运行状态。

ps命令:过滤服务相关进程

ps aux | grep 服务名
  • aux:显示所有进程的详细信息(用户、PID、CPU/内存占用等)
  • grep:过滤包含服务名的进程(注意:grep自身也会被匹配,可用grep -v grep排除)

示例:

ps aux | grep nginx

输出:

root      1234  0.0  0.1  10240  1236 ?        Ss   10:00   0:00 nginx: master process /usr/sbin/nginx -g daemon on;
www-data  1235  0.0  0.2  10560  2568 ?        S    10:00   0:00 nginx: worker process

master process”为主进程,“worker process”为工作进程,均存在则服务正常运行。

top命令:实时监控进程状态

top -p $(pgrep -d, 服务名)
  • pgrep:获取服务名的进程ID(-d,用于分隔多个PID)
  • -p:指定监控的进程ID

示例:

top -p $(pgrep -d, nginx)

可实时查看nginx进程的CPU、内存占用及运行状态,若进程存在且资源占用正常,则服务运行正常。

通过netstat和ss命令查看端口关联服务

服务通常通过监听特定端口提供功能,通过端口可反向关联运行的服务。

netstat命令(传统工具,逐渐被ss替代)

netstat -tulnp | grep 端口号
  • -t:TCP端口,-u:UDP端口,-l:仅显示监听端口,-n:以数字形式显示地址和端口,-p:显示进程ID/名称

示例:

netstat -tulnp | grep :80

输出:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1234/nginx: master

表明80端口被nginx主进程(PID 1234)监听。

ss命令(推荐,更高效)

ss -tulnp | grep 端口号

语法与netstat类似,但速度更快,支持更多过滤条件(如-state按连接状态过滤)。

示例:

linux如何查看正在运行的服务

ss -tulnp | grep :3306

输出:

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld

表明3306端口被MySQL进程(mysqld)监听。

服务状态分类与含义

理解服务状态是排查问题的关键,常见状态包括:

  • active (running):服务正在运行。
  • inactive (dead):服务已停止。
  • failed:服务启动失败或运行时异常(需查看日志)。
  • enabled:服务开机自启(与运行状态无关)。
  • disabled:服务不自启。

通过systemctl is-enabled 服务名可检查开机自启状态,

systemctl is-enabled nginx  # 返回enabled/disabled/static

实际应用场景示例

排查服务无法启动问题

若用户反馈“网站无法访问”,需依次检查:

systemctl status nginx          # 查看服务状态
journalctl -u nginx -n 10       # 查看最近10行服务日志
ss -tulnp | grep :80            # 检查80端口是否监听

若日志显示“bind to [::]:80 failed: Address already in use”,需用lsof -i :80查看端口占用进程。

监控关键服务资源占用

对高负载服务(如MySQL),用top持续监控进程资源:

top -p $(pgrep -d, mysqld)

若CPU占用持续高于80%,需结合mysqldumpslow分析慢查询日志优化性能。

常用查看服务命令对比

命令名称 所属工具 主要功能 常用选项 适用系统
systemctl systemd 管理系统服务,查看状态 list-units, status, is-active, –all RHEL7+, Ubuntu16.04+
service SysVinit/systemd 启动/停止/查看服务状态 start, stop, status, restart 所有Linux
ps coreutils 查看进程,过滤服务进程 aux, -ef, grep 所有Linux
top/htop procps/htop 实时监控进程运行状态 -p, 按进程名过滤 所有Linux
netstat/ss net-tools/iproute2 查看端口关联服务 -tulnp, -tulpn net-tools(旧),ss(新)

相关问答FAQs

如何区分服务是系统自带还是用户安装的?
解答:可通过查看服务的安装路径或配置文件位置判断。

  • 使用which 服务名查看可执行文件路径(如which nginx返回/usr/sbin/nginx为系统安装,/usr/local/nginx/sbin/nginx为编译安装);
  • 检查服务配置文件:系统自带服务通常位于/lib/systemd/system//etc/init.d/,用户安装的服务可能自定义在/etc/systemd/system/或用户目录下(如~/.config/systemd/user/)。

服务启动失败时如何查看错误日志?
解答:systemd服务日志可通过journalctl查看,例如journalctl -u 服务名 -n 100(显示最近100行日志);SysVinit服务日志通常在/var/log/下对应服务目录(如/var/log/nginx/error.log),或使用tail -f /var/log/syslog查看系统日志。systemctl status 服务名也会显示错误摘要,Failed to start XXX: Unit xxx.service is not active”。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20572.html

(0)
酷番叔酷番叔
上一篇 2025年8月31日 00:16
下一篇 2025年8月31日 00:35

相关推荐

  • 系统升级如何备份文件防误删?

    Linux系统以开源、安全、高效著称,适用于开发、学习及日常办公,在笔记本上安装Linux可提升性能并深度定制操作环境,本指南遵循专业操作规范,结合硬件兼容性与安全实践,逐步引导完成安装(参考DistroWatch及Linux官方文档),创建系统恢复U盘(Windows可通过”创建恢复驱动器”功能),选择Lin……

    2025年7月9日
    14100
  • 如何快速掌握Linux下的C语言开发?

    环境准备:安装必备工具安装GCC编译器GCC是Linux默认的C语言编译器,通过终端安装:sudo apt update && sudo apt install gcc # Debian/Ubuntusudo dnf install gcc # Fedora/CentOS验证安装:gcc –v……

    2025年7月24日
    10900
  • 交叉编译环境搭建好后,Linux系统移植的具体步骤是什么?

    交叉编译环境搭建完成后,Linux移植工作需围绕目标硬件平台展开,核心是将编译好的内核、根文件系统及应用程序适配到目标板,确保系统能正常启动并运行,以下是详细的移植步骤及关键注意事项,目标板硬件准备与环境确认移植前需明确目标板的硬件架构(如ARM Cortex-A、RISC-V等)、处理器型号、外设接口(UAR……

    2025年8月24日
    11500
  • Linux系统如何使用vim编辑器进行文本编辑操作?

    Linux系统中的vim编辑器是一款功能强大的文本编辑工具,因其高效、灵活和高度可定制性,成为开发者和管理员的首选,本文将详细介绍vim的安装、基本操作模式、核心编辑功能及进阶技巧,帮助用户快速上手,vim的安装因Linux发行版而异,在Ubuntu/Debian系统中,可通过sudo apt update……

    2025年9月26日
    8700
  • Linux如何将含有英文的日期进行转换?

    在Linux系统中,处理英文日期转换是日常运维、数据分析、日志处理等场景中的常见需求,由于英文日期格式多样(如“Mon Jan 15 2024”“2024-01-15T14:30:00Z”“January 15, 2024”等),且可能涉及时区、格式标准化等问题,掌握多种转换方法能灵活应对不同场景,本文将详细介……

    2025年8月24日
    10900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信