菜鸟科技网

Linux服务启动停止命令有哪些?

在Linux系统中,服务的启动、停止、重启和状态管理是系统管理员日常操作的核心内容之一,不同版本的Linux发行版可能使用不同的服务管理工具,主要包括传统的System V init(SysVinit)和现代的systemd,以下将详细介绍这两类工具中常用的命令,并通过表格对比其使用方法,帮助用户高效管理服务。

Linux服务启动停止命令有哪些?-图1
(图片来源网络,侵删)

System V init(SysVinit)服务管理命令

SysVinit是基于运行级别的服务管理方案,通过脚本文件控制服务的启动和停止,常见的命令包括servicechkconfig,适用于CentOS 6及更早版本、Debian 7等系统。

  1. service命令
    service命令用于控制当前运行级别的服务状态,基本语法为service 服务名 操作

    • 启动服务:service httpd start(启动Apache服务)
    • 停止服务:service nginx stop(停止Nginx服务)
    • 重启服务:service mysqld restart(重启MySQL服务)
    • 查看服务状态:service sshd status(检查SSH服务状态)

    service命令本质上是调用/etc/init.d/目录下的脚本文件,例如service httpd start实际执行的是/etc/init.d/httpd start

  2. chkconfig命令
    chkconfig用于管理服务的开机自启状态,需配合--level参数指定运行级别(默认为所有级别)。

    Linux服务启动停止命令有哪些?-图2
    (图片来源网络,侵删)
    • 设置服务开机自启:chkconfig httpd on
    • 关闭服务开机自启:chkconfig nginx off
    • 查看服务开机自启状态:chkconfig --list httpd
    • 仅在运行级别3和5开启自启:chkconfig --level 35 mysqld on

systemd服务管理命令

systemd是现代Linux发行版(如Ubuntu 16.04+、CentOS 7+、Debian 8+)的默认初始化系统,采用并行启动和依赖管理机制,功能更强大,核心命令为systemctl

  1. 基本操作命令

    • 启动服务:systemctl start nginx.service(可省略.service后缀)
    • 停止服务:systemctl stop httpd
    • 重启服务:systemctl restart sshd
    • 重新加载配置(不中断服务):systemctl reload nginx
    • 查看服务状态:systemctl status mysql(显示详细运行信息和日志)
  2. 开机自启管理

    • 启用开机自启:systemctl enable cron(创建符号链接到/etc/systemd/system/目标目录)
    • 禁用开机自启:systemctl disable firewalld
    • 查看是否启用自启:systemctl is-enabled vsftpd
  3. 服务状态与日志

    Linux服务启动停止命令有哪些?-图3
    (图片来源网络,侵删)
    • 查看活跃服务列表:systemctl list-units --type=service --state=running
    • 查看失败的服务:systemctl --failed
    • 查看服务日志:journalctl -u docker.service(查看Docker服务的日志)

命令对比与使用场景

以下是SysVinit和systemd命令的对比表格,方便快速查阅:

功能 SysVinit命令 systemd命令 说明
启动服务 service 服务名 start systemctl start 服务名 两者均立即启动服务,但systemd支持并行加载
停止服务 service 服务名 stop systemctl stop 服务名 停止运行中的服务
重启服务 service 服务名 restart systemctl restart 服务名 先停止后启动,适用于需要完全重置的场景
重新加载配置 无(需手动重启) systemctl reload 服务名 动态读取新配置而不中断服务(如Nginx)
开机自启 chkconfig 服务名 on systemctl enable 服务名 设置系统启动时自动加载服务
关闭开机自启 chkconfig 服务名 off systemctl disable 服务名 禁止服务随系统启动
查看服务状态 service 服务名 status systemctl status 服务名 显示服务是否运行及进程ID等详细信息
查看开机自启状态 chkconfig --list 服务名 systemctl is-enabled 服务名 检查服务是否设置为开机自启

注意事项

  1. 权限问题:所有命令均需root权限或通过sudo执行,普通用户可能遇到“Access denied”错误。
  2. 服务名称差异:不同发行版的服务名称可能不同,如CentOS 7中Apache服务名为httpd,而Ubuntu中为apache2
  3. 依赖管理:systemd会自动处理服务依赖关系,而SysVinit需手动检查脚本中的依赖顺序。
  4. 日志查看:systemd使用journalctl统一管理日志,而SysVinit的日志通常分散在/var/log/目录或服务的日志文件中。

相关问答FAQs

Q1: 如何判断当前系统使用的是SysVinit还是systemd?
A1: 可以通过以下方法判断:

  • 执行命令ls -l /sbin/init,若结果为/lib/systemd/systemd,则使用systemd;若为/etc/init.d/rc,则为SysVinit。
  • 或查看进程列表:ps -p 1 -o comm,输出为systemd则使用systemd,输出为init则为SysVinit。

Q2: 为什么使用systemctl enable后服务仍未开机自启?
A2: 可能原因包括:

  • 服务未正确安装:需确保服务对应的软件包已安装,且服务文件位于/usr/lib/systemd/system/目录下。
  • 手动修改了服务文件:若服务文件被移动或删除,需重新执行systemctl daemon-reload重新加载配置。
  • 镜像问题:在容器环境中,可能因缺少--privileged权限导致符号链接创建失败。
分享:
扫描分享到社交APP
上一篇
下一篇