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系统添加硬盘并分区是常见的操作,主要用于扩展存储空间、隔离数据或搭建特定服务环境,整个过程涉及虚拟机配置、系统检测、分区管理、格式化及挂载等步骤,下面将详细说明操作流程,虚拟机端添加硬盘首先需要在虚拟机管理软件(如VMware、VirtualBox等)中为新硬盘创建虚拟设备,以VMwa……

    2025年10月5日
    1000
  • 如何比较变量MD5值是否相同?

    核心方法:字符串直接对比MD5值本质是32位十六进制字符串(如d41d8cd98f00b204e9800998ecf8427e),只需直接比较字符串内容:md5_2=”d41d8cd98f00b204e9800998ecf8427e”if [ “$md5_1” = “$md5_2” ]; then echo……

    2025年7月17日
    5100
  • 硬盘装Linux竟如此简单?

    创建Linux启动盘,备份数据后启动安装程序,手动或自动分区硬盘(分配根目录/、交换空间swap等),选择安装位置,设置用户名密码,安装完成后重启进入新系统。

    2025年8月5日
    3400
  • Linux系统如何锁定用户账户以保障安全?

    在Linux系统中,锁定用户是一项常见的安全管理操作,通常用于临时或永久禁止用户访问系统,例如应对安全事件、员工离职、权限调整等场景,Linux提供了多种用户锁定方法,涵盖密码锁定、登录限制、SSH访问控制等多个维度,本文将详细介绍这些方法的具体操作、适用场景及注意事项,通过passwd命令锁定用户密码pass……

    2025年9月26日
    1700
  • Linux系统如何关闭防火墙?

    在Linux系统中,防火墙是保障系统安全的重要屏障,用于控制进出网络的流量,防止未授权访问和恶意攻击,在某些特定场景下(如内网环境测试、临时调试服务或安全策略配置),可能需要临时关闭防火墙,需要注意的是,关闭防火墙会使系统暴露在潜在的安全风险中,因此操作前务必确认环境的安全性,并建议在完成操作后尽快重新启用防火……

    2025年9月22日
    3100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信