systmctl的作用,使用场景和用法

发布于:2025-08-01 ⋅ 阅读:(17) ⋅ 点赞:(0)

好的,我们来详细介绍一下 systemctl,它是现代 Linux 系统中一个极其重要和强大的命令。


零. 作者常用的systemctl命令

  1. linux图形化界面由于某些原因意外卡死的时候,使用Ctrl+Alt+F3进入虚拟控制台,然后使用systemctl restart gdm来直接重启桌面系统
  2. systemctl status gdm可以监控现在某一个system进程的状态
    在这里插入图片描述

一. systemctl 是什么?它的作用是什么?

systemctlsystemd 的主控制命令。要理解 systemctl,你必须先了解 systemd

  • systemd:是目前绝大多数主流 Linux 发行版(如 CentOS 7+, Ubuntu 15.04+, Debian 8+, Fedora等)使用的系统和服务管理器。它取代了传统的 SysVinit 和 Upstart,成为系统的第一个进程(PID=1),负责启动系统、管理系统进程和各种服务。

  • systemctl 的作用systemctl 就是你与 systemd 交互的命令行工具。你可以用它来:

    1. 管理服务(Service):启动、停止、重启、重载、查看服务状态。
    2. 控制开机启动项:设置某个服务是否在开机时自动运行。
    3. 查看系统状态:检查正在运行的服务、失败的服务等。
    4. 管理系统运行级别(Target):切换系统模式,如切换到图形界面或命令行模式。
    5. 查看日志:通过与 journalctl 结合,方便地查看特定服务的日志,用于排错。
    6. 控制系统电源:如重启、关机、待机等。

简单来说,在现代 Linux 系统上,所有关于服务管理系统启动的操作,基本都离不开 systemctl。它统一了之前分散的 servicechkconfiginitshutdown 等命令的功能。

二、systemctl 的主要使用场景

systemctl 几乎是你作为 Linux 系统管理员或开发者每天都会用到的工具。以下是一些典型的使用场景:

  • 部署和管理应用

    • 场景:你刚刚在服务器上安装了 Nginx 网站服务器。
    • 操作
      • 启动 Nginx:sudo systemctl start nginx
      • 检查 Nginx 是否成功运行:sudo systemctl status nginx
      • 设置 Nginx 开机自启:sudo systemctl enable nginx
      • 修改了 Nginx 配置后,重新加载配置:sudo systemctl reload nginx
      • 如果需要彻底重启服务:sudo systemctl restart nginx
  • 系统故障排查

    • 场景:网站无法访问,怀疑是后端数据库(如 MySQL)服务挂了。
    • 操作
      • 立即检查 MySQL 服务状态:sudo systemctl status mysqld
      • 从状态信息中,你可以看到服务是否 active (running),以及最近几条日志。
      • 如果服务失败(failed),你可以使用 journalctl -u mysqld 查看详细的错误日志,定位问题原因。
  • 系统维护和更新

    • 场景:需要进行系统内核更新或重要维护,要求重启服务器。
    • 操作
      • 安全地重启系统:sudo systemctl reboot
      • 维护完成后需要关机:sudo systemctl poweroff
  • 切换系统运行模式

    • 场景:服务器默认启动到图形界面,但你作为管理员,希望它只启动到命令行模式以节省资源。
    • 操作
      • 查看当前默认模式:systemctl get-default (可能会显示 graphical.target)
      • 将默认模式设置为命令行:sudo systemctl set-default multi-user.target

三、systemctl 的常用命令和用法

systemd 管理的对象被称为 单元(Unit)。单元有多种类型,最常见的是服务单元(.service),其他还有套接字(.socket)、挂载点(.mount)、目标(.target)等。在使用 systemctl 时,如果省略单元类型,它默认会认为是 .service

例如,systemctl start nginxsystemctl start nginx.service 是等效的。

1. 服务管理 (Management of Services)

这是最核心的用法。以 nginx 服务为例:

命令 作用 示例
start 启动一个服务 sudo systemctl start nginx
stop 停止一个服务 sudo systemctl stop nginx
restart 重启一个服务(先停止后启动) sudo systemctl restart nginx
reload 重载服务配置(不中断服务) sudo systemctl reload nginx
status 查看服务的详细状态 systemctl status nginx
enable 设置服务开机自启 sudo systemctl enable nginx
disable 取消服务开机自启 sudo systemctl disable nginx
is-active 检查服务当前是否正在运行 systemctl is-active nginx
is-enabled 检查服务是否设置为开机自启 systemctl is-enabled nginx
mask "屏蔽"一个服务,使其无法被启动 sudo systemctl mask nginx
unmask 取消屏蔽 sudo systemctl unmask nginx

status 命令的输出解读:

systemctl status nginx 的输出信息非常丰富,包含了:

  • Loaded: 服务的单元文件路径和状态(是否启用)。
  • Active: 服务的运行状态,如 active (running)inactive (dead)failed
  • Main PID: 服务主进程的 PID。
  • Tasks: 服务占用的总进程数。
  • Memory: 服务占用的内存。
  • CGroup: 相关的控制组信息。
  • Logs: 最近的几条日志记录,非常便于快速排错。
2. 系统状态查看 (Inspecting System State)
命令 作用 示例
list-units 列出当前正在运行的、活动的单元 systemctl list-units
list-units --all 列出所有单元,包括非活动的 systemctl list-units --all
list-units --type=service 只列出服务类型的单元 systemctl list-units --type=service
list-unit-files 列出所有已安装的单元文件及其状态 systemctl list-unit-files
list-dependencies 列出单元的依赖关系 systemctl list-dependencies nginx.service
3. 系统运行级别/目标管理 (Target Management)

target 是一组单元的集合,类似于旧系统中的“运行级别”。

命令 作用 示例
get-default 获取默认的启动目标 systemctl get-default
set-default 设置默认的启动目标 sudo systemctl set-default graphical.target
isolate 切换到指定目标(不重启) sudo systemctl isolate multi-user.target

常见的 Targets:

  • multi-user.target: 命令行模式(类似运行级别 3)。
  • graphical.target: 图形用户界面模式(类似运行级别 5)。
  • reboot.target: 重启。
  • poweroff.target: 关机。
4. 日志管理 (Log Management via journalctl)

systemctlsystemd 的日志系统 journald 紧密集成,通过 journalctl 命令访问。

命令 作用 示例
journalctl -u [service] 查看指定服务的所有日志 journalctl -u nginx.service
journalctl -u [service] -f 实时跟踪指定服务的日志(类似 tail -f journalctl -u nginx.service -f
journalctl -n [num] 查看最近的 N 条日志 journalctl -n 50
journalctl --since "time" 查看某个时间点之后的日志 journalctl --since "2023-10-27 10:00:00"
5. 系统电源管理 (System Power Control)
命令 作用
systemctl reboot 重启系统
systemctl poweroff 关闭系统(断电)
systemctl halt 挂起系统(不断电)
systemctl suspend 系统待机(内存供电)
systemctl hibernate 系统休眠(数据存入硬盘)

总结

systemctl 是现代 Linux 系统管理的核心。它用一套统一、强大且一致的命令,取代了过去零散的工具链,使得服务管理、系统启动控制和故障排查变得更加高效和透明。掌握 systemctl 是每一位 Linux 用户和管理员的必备技能。


网站公告

今日签到

点亮在社区的每一天
去签到