Linux系统如何停止运行中的服务?

Linux系统中停止服务的方法因服务管理工具的不同而有所差异,常见的服务管理工具包括Systemd、SysVinit、Upstart等,不同发行版可能默认使用不同的工具,以下将分别介绍各类工具下停止服务的具体操作及注意事项。

linux如何停服务

使用Systemd停止服务(主流发行版:Ubuntu 16.04+、CentOS 7+、Debian 8+等)

Systemd是目前大多数现代Linux发行版默认的服务管理器,通过systemctl命令管理服务生命周期,停止服务的核心命令为systemctl stop,具体操作如下:

基本停止命令

sudo systemctl stop [服务名].service  

停止Nginx服务:

sudo systemctl stop nginx.service  

若省略.service后缀,Systemd会自动识别,上述命令也可简化为sudo systemctl stop nginx

相关管理选项

  • 禁止开机自启并停止当前服务systemctl disable仅禁止开机启动,不会停止当前运行的服务;若需同时停止并禁止开机自启,可结合使用:
    sudo systemctl stop nginx && sudo systemctl disable nginx
  • 彻底禁用服务(阻止手动启动)systemctl mask会创建指向/dev/null的符号链接,彻底禁止服务通过任何方式启动(包括手动和依赖启动):
    sudo systemctl mask nginx
  • 查看服务状态:停止服务后,可通过以下命令确认服务状态:
    systemctl status nginx  # 显示"inactive (dead)"表示已停止

Systemd常用命令速查表

命令 选项/参数 示例说明
systemctl stop [服务名] sudo systemctl stop mysql:停止MySQL服务
systemctl disable [服务名] sudo systemctl disable apache2:禁止Apache2开机自启
systemctl mask [服务名] sudo systemctl mask docker:彻底禁用Docker服务
systemctl status [服务名] systemctl status sshd:查看SSH服务状态

使用SysVinit停止服务(旧版发行版:CentOS 6、Debian 7等)

SysVinit是早期的Linux初始化系统,通过service命令或直接执行/etc/init.d/目录下的服务脚本管理服务。

基本停止命令

sudo service [服务名] stop  

停止Apache服务:

linux如何停服务

sudo service httpd stop

通过init.d脚本停止

SysVinit的服务脚本位于/etc/init.d/目录下,可直接执行脚本并传入stop参数:

sudo /etc/init.d/nginx stop

禁止开机自启

使用chkconfig命令管理SysVinit服务的开机启动状态:

sudo chkconfig [服务名] off  # 禁止开机自启
sudo chkconfig --list [服务名]  # 查看开机启动状态(显示"off"表示已禁用)

使用Upstart停止服务(部分发行版:Ubuntu 14.04、Debian 6等)

Upstart是介于SysVinit和Systemd之间的初始化系统,通过initctl命令管理服务。

停止服务命令

sudo initctl stop [服务名]

停止Cron服务:

sudo initctl stop cron

查看服务状态:

linux如何停服务

sudo initctl status [服务名]  # 显示"stop"表示已停止

通用停止服务方法(适用于所有场景)

若上述工具均不适用(如自定义服务脚本),可通过终止进程的方式停止服务,但需注意:此方法无法处理服务的依赖关系和清理工作,可能导致残留进程或文件。

查找服务进程

使用pspgreppidof命令查找进程ID(PID):

ps aux | grep [服务名]  # ps aux | grep nginx
pgrep -f [服务名]       # pgrep -f nginx

终止进程

  • 正常终止:发送SIGTERM信号(15),允许服务优雅退出:
    kill [PID]  # kill 1234
  • 强制终止:若服务无响应,发送SIGKILL信号(9),直接终止进程(可能导致数据丢失):
    kill -9 [PID]  # kill -9 1234

注意事项

  1. 权限问题:停止服务通常需要root权限,普通用户需使用sudo执行命令。
  2. 关键服务:停止核心服务(如networksshd)可能导致系统异常,操作前需确认必要性。
  3. 依赖关系:使用Systemd时,可通过systemctl list-dependencies [服务名]查看服务依赖,避免停掉依赖服务导致其他功能异常。
  4. 日志排查:若服务无法正常停止,可通过journalctl -u [服务名](Systemd)或/var/log/下的服务日志排查原因。

相关问答FAQs

Q1:停止服务后如何确认服务已完全停止?
A:可通过以下方式确认:

  1. Systemdsystemctl status [服务名],显示”inactive (dead)”表示已停止;
  2. 进程检查ps aux | grep [服务名],若无相关进程则说明已停止;
  3. 端口检查:若服务监听端口,可用netstat -tuln | grep [端口号]确认端口是否释放。

Q2:为什么用systemctl stop服务后,服务又自动重启了?
A:可能原因有两种:

  1. 服务配置了自动重启:检查服务单元文件(cat /etc/systemd/system/[服务名].service),若包含Restart=alwaysRestart-on-failure,服务异常停止后会自动重启;可通过systemctl edit [服务名]添加[Service]段并设置Restart=no禁用。
  2. 其他服务依赖:若服务被其他服务依赖,停止依赖服务时会尝试重启它;可通过systemctl list-dependencies [服务名]查看依赖关系,或停止依赖服务而非目标服务。

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

(0)
酷番叔酷番叔
上一篇 2025年10月4日 22:42
下一篇 2025年10月4日 22:56

相关推荐

  • 阿里云Linux主机如何添加并配置2个网站的详细步骤?

    在阿里云Linux主机上添加两个网站,主要涉及环境准备、网站目录创建、数据库配置、Nginx服务器配置及SSL证书部署等步骤,以下以CentOS 7系统为例,结合Nginx+MySQL+PHP(LNMP环境)详细说明操作流程,环境准备首先确保阿里云Linux主机已安装LNMP环境(若未安装,可通过阿里云云市场的……

    2025年9月26日
    7800
  • 如何用grep高效过滤包管理器结果?

    通过包管理器搜索软件包列表,再利用grep等命令行工具对搜索结果进行关键词匹配和过滤,从而快速精准地定位所需软件。

    2025年7月31日
    9000
  • Linux系统如何修改用户密码的具体操作步骤有哪些?

    在Linux系统中,密码是保障账户安全的核心要素,无论是日常使用还是系统管理,掌握密码修改方法都是必备技能,Linux修改密码的操作因用户身份(普通用户/root)、操作环境(命令行/图形界面)及场景(正常修改/过期处理/忘记密码)不同而有所差异,本文将详细拆解各类操作流程及注意事项,普通用户修改自己的密码普通……

    2025年9月27日
    8400
  • linux的ftp如何启用

    Linux中,安装并配置FTP服务器(如vsftpd),然后启动服务即可启用FTP

    2025年8月14日
    10000
  • cdlinux如何拷贝到U盘

    cdlinux镜像文件用软碟通等工具打开,通过“启动”写入硬盘映像到

    2025年8月18日
    7700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信