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

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

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

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

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

基本语法与常用选项

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

常用选项包括:

  • --all 或 -a:显示所有服务(包括未运行的)
  • --state=:按状态过滤(如running、inactive、failed)
  • --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;否则返回inactive或failed。

通过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下如何查看JVM内存的分配与占用情况?

    在Linux系统中查看JVM内存使用情况是Java应用运维和性能调优的核心技能,常用的方法包括命令行工具、可视化监控工具以及日志分析等,本文将详细介绍这些方法的具体操作和输出解读,帮助开发者高效掌握JVM内存状态,命令行工具:快速精准的内存监控命令行工具是Linux环境下最直接的JVM内存查看方式,适合快速定位……

    2025年8月27日
    30100
  • Linux系统如何准确辨识Tab键的功能与操作技巧?

    在Linux操作系统中,Tab键作为键盘上最常用的功能键之一,其核心功能是通过“补全”机制提升命令行操作效率,但不同场景下Tab键的辨识方式和作用存在差异,准确理解Tab键的辨识逻辑,能帮助用户更高效地完成系统管理、文件操作和脚本编写等任务,Tab键的基础辨识逻辑在于“前缀匹配补全”,当用户在终端输入命令或路径……

    2025年10月7日
    23700
  • 光盘/USB启动安装Linux教程

    准备Linux安装介质(光盘或USB),重启电脑,开机时按特定键(如F12、F2、ESC)进入启动菜单或BIOS/UEFI设置,选择该介质为第一启动项,保存退出后电脑将从介质启动,运行Linux安装程序,按提示完成安装。

    2025年7月21日
    26000
  • linux杀掉之后如何启动

    Linux中,若误杀掉进程后想重新启动,需根据具体服务或应用,使用相应

    2025年8月10日
    25100
  • ip link命令怎么用?

    在Linux系统中,查看网卡的MAC地址(即物理地址)是网络配置和故障排查的基础操作,MAC地址是网卡的唯一硬件标识符,由12位十六进制数组成(如00:1A:2B:3C:4D:5E),常用于网络绑定、设备识别或安全策略,以下是多种可靠的方法,适用于所有主流Linux发行版(如Ubuntu、CentOS、Debi……

    2025年6月23日
    28700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信