Linux如何查看已启动的服务?

在Linux系统中,管理启动服务是系统运维的基础工作,无论是排查服务异常、优化启动速度,还是确保关键服务开机自启,都需要掌握查看启动服务的方法,Linux的服务管理机制因发行版和版本不同而有所差异,主流系统多采用systemd(如Ubuntu 16.04+、CentOS 7+),而较老版本可能使用SysVinit(如CentOS 6),本文将详细介绍不同机制下查看启动服务的方法,并提供实用示例。

linux如何查看启动的服务

基于systemd的系统查看启动服务(主流方式)

systemd是目前Linux发行版广泛采用的服务管理器,通过systemctl命令可以全面管理服务的生命周期,查看启动状态也更为便捷。

查看所有已安装的服务单元

使用systemctl list-unit-files命令可列出系统中所有服务单元文件及其启用状态,过滤出服务类型需添加--type=service参数:

systemctl list-unit-files --type=service

输出包含三列核心信息:UNIT(服务单元名,如nginx.service)、STATE(当前状态,如enabled/disabled/static)、DESCRIPTION(服务描述)。

  • enabled:服务开机自启;
  • disabled:服务开机不自启,需手动启动;
  • static:不可独立启动,通常作为其他服务的依赖。

查看当前活跃的服务

若需了解当前正在运行的服务(包括开机自启和手动启动的),可结合list-units--state=running参数:

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

输出会显示ACTIVE状态为active (running)的服务,并附带加载状态(loaded)和子进程信息(如main PID)。

查看特定服务的启动状态

针对单个服务,可通过is-enabled命令快速判断其是否开机自启:

systemctl is-enabled nginx.service

返回enabled即开机自启,disabled则不自启,若服务不存在则报错。

linux如何查看启动的服务

查看服务自启配置的来源

服务自启配置可能位于多个位置,可通过cat查看服务单元文件中的[Install]段落(通常定义WantedByRequiredBy):

cat /usr/lib/systemd/system/nginx.service | grep -A 5 "[Install]"

其中WantedBy=multi-user.target表示服务在多用户模式(默认启动级别)下自启。

基于SysVinit的系统查看启动服务(老版本兼容)

对于仍在使用SysVinit的系统(如CentOS 6),服务管理依赖chkconfig命令和运行级别目录,查看方式如下:

使用chkconfig查看服务开机状态

chkconfig --list可列出所有服务在不同运行级别(0-6)下的自启状态:

chkconfig --list

输出格式为服务名 级别1:状态 级别2:状态 ...,例如nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭,其中级别2-3为多用户模式,5为图形界面模式,启用表示该级别下开机自启。

查看服务脚本位置

SysVinit的服务脚本存放在/etc/init.d/目录,可通过ls列出所有服务:

ls /etc/init.d/

例如nginxhttpd等脚本均在此目录,可通过/etc/init.d/nginx status查看当前运行状态。

linux如何查看启动的服务

查看运行级别自启服务

各运行级别的自启服务脚本存放在/etc/rc[0-6].d/目录,以S开头(启动)或K开头(关闭)+数字(启动顺序)命名,

ls /etc/rc3.d/

输出中S50nginx表示在级别3下,第50位启动nginx服务。

服务查看方法对比总结

为方便快速查阅,以下表格对比了主流查看方法的适用场景和核心命令:

查看目标 systemd命令 SysVinit命令 说明
查看所有服务及启用状态 systemctl list-unit-files --type=service chkconfig --list systemd显示enabled/disabled,SysVinit显示各级别状态
查看当前运行服务 systemctl list-units --type=service --state=running service --status-all 前者更详细,包含进程ID和运行时长
查看单个服务自启状态 systemctl is-enabled 服务名 chkconfig 服务名 systemd直接返回状态,SysVinit需结合chkconfig --list的输出
查看服务配置来源 cat /usr/lib/systemd/system/服务名 ls /etc/rc*.d/ systemd通过[Install]段落定位,SysVinit通过运行级别目录脚本判断

相关问答FAQs

Q1: 为什么有些服务显示enabled但当前没有运行?
A: enabled仅表示服务配置为开机自启,但实际运行可能受依赖服务未启动、资源不足或服务自身错误影响,可通过systemctl status 服务名查看日志(如journalctl -u 服务名),排查启动失败原因,若服务依赖network.target但网络未就绪,可能导致服务启动失败但状态仍为enabled

Q2: 如何禁止服务开机自启且停止当前运行的服务?
A: 对于systemd系统,使用systemctl disable 服务名禁止开机自启,再通过systemctl stop 服务名停止当前运行;若需彻底移除服务(如删除安装包),则需结合包管理器(如apt remove/yum erase),对于SysVinit系统,执行chkconfig 服务名 off禁止自启,再用service 服务名 stop停止服务。

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

(0)
酷番叔酷番叔
上一篇 5天前
下一篇 5天前

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信