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 UDP端口怎么开?

    核心概念UDP协议:无连接协议,适用于DNS、DHCP、视频流等场景,“打开端口”的含义:配置防火墙允许外部UDP数据包到达指定端口,安全原则:仅开放必要端口,避免暴露整个系统,操作步骤(根据防火墙工具选择)方法1:使用 iptables(传统工具,适用于所有Linux)临时允许UDP端口(重启失效)开放UDP……

    2025年7月27日
    3900
  • Linux终端中查看文件时如何实现翻页操作?

    在Linux操作系统中,翻页操作是日常使用中非常频繁的需求,无论是查看长文本文件、浏览命令输出结果,还是阅读日志信息,掌握翻页技巧都能显著提升操作效率,Linux中的翻页操作主要涉及命令行工具、文本编辑器以及终端模拟器自带功能,下面将从多个场景详细说明具体实现方法,使用less和more分页查看输出在Linux……

    2025年9月23日
    1800
  • linux如何创建交换分区

    Linux 系统中,可通过分区工具创建分区,将其格式化为 swap 分区,然后使用 m

    2025年8月16日
    3400
  • Linux下如何启动Oracle服务?

    在Linux系统中启动Oracle服务需遵循特定顺序并确保环境配置正确,以下是详细步骤及注意事项,启动Oracle服务前需确认以Oracle用户(如oracle)登录系统,并正确设置环境变量,包括ORACLE_HOME(Oracle安装路径)和ORACLE_SID(数据库实例名),可通过执行echo $ORAC……

    2025年9月30日
    1600
  • Linux服务器如何修改自己的密码?

    在Linux服务器管理中,定期修改密码是保障系统安全的重要措施,能有效防止密码泄露或被暴力破解,无论是普通用户还是root用户,掌握正确的密码修改方法都十分必要,本文将详细介绍Linux服务器中修改自身密码的多种场景及操作步骤,包括常规修改、非交互式修改以及忘记密码时的应急处理,并补充密码策略相关注意事项,帮助……

    2025年9月28日
    3400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信