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

相关推荐

  • CentOS启动失败如何解决?

    在Linux系统中安装STP(一个用于约束求解的SMT求解器,常用于程序分析和符号执行)需要从源码编译安装,以下是详细步骤,覆盖常见发行版(如Ubuntu/Debian、CentOS/Fedora):安装依赖项STP依赖C/C++编译环境、CMake、Python及数学库,根据发行版选择命令:Ubuntu/De……

    2025年7月1日
    11700
  • Linux如何强制退出cat命令?

    当cat从标准输入读取时(用户手动输入内容)场景:直接运行cat命令(不带文件名参数),此时终端等待用户输入文本, $ catHello World! # 用户输入内容Hello World! # cat实时回显退出方法:按一次 Ctrl+D(EOF信号):表示输入结束,cat会立即退出并返回命令行,连续按两次……

    2025年6月25日
    14900
  • Linux如何用命令行操作光驱?

    检查光驱识别状态查看设备节点终端执行:ls /dev/sr*输出类似 /dev/sr0 表示光驱已被识别(sr0 是常见设备名),检查内核识别状态dmesg | grep -i cdrom若输出包含 CD-ROM 和型号信息,说明驱动正常,挂载与访问光盘图形界面(推荐新手)插入光盘后,文件管理器(如Nautil……

    2025年7月25日
    10400
  • linux如何进入家目录

    Linux终端中,可直接输入cd ~或cd /home/用户名(替换

    2025年8月10日
    11100
  • 如何进入Linux GRUB引导菜单页面?

    Linux系统的GRUB(Grand Unified Bootloader)是引导加载程序,负责在开机时加载操作系统内核,进入GRUB页面可以修改启动参数、选择不同的操作系统 entry 或修复系统问题,是Linux系统管理和故障排查的重要入口,以下是进入GRUB页面的详细方法及注意事项,开机时快速按下特定按键……

    2025年9月22日
    10600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信