当前位置: 首页 > news >正文

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

好的,我们来详细介绍一下 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 -fjournalctl -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 用户和管理员的必备技能。

http://www.lryc.cn/news/606372.html

相关文章:

  • Maven 与单元测试:JavaWeb 项目质量保障的基石
  • 对于前端工程化的理解
  • Day07_C++编程
  • day066-内容分发网络(CDN)与web应用防火墙(WAF)
  • 【动态规划】数位dp
  • QT收费情况
  • SpringBoot实战:高效Web开发
  • SAM附录详解
  • Android依赖注入框架Hilt入门指南
  • iOS软件性能监控实战指南 开发到上线的完整流程解析
  • 上传文件到服务器
  • C++11特性——右值引用与移动语义
  • 基于大模型的知识库落地实施策略
  • 硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木
  • opencv解迷宫
  • 图论:SPFA算法
  • 20250731在荣品的PRO-RK3566开发板的Android13下解决敦泰的FT8206触控芯片的只有4点触控功能
  • 经典算法之美:冒泡排序的优雅实现
  • 【计算机网络】IP地址、子网掩码、网关、DNS、IPV6是什么含义?计算机中如何设置子网掩码与网关?
  • 分类-鸢尾花分类
  • 基于SpringBoot和SpringAI框架实践
  • 数据转换能干什么?有哪些好用的数据转换方法?
  • 【React】diff 算法
  • 深度解析领域特定语言(DSL)第七章:语法分析器组合子 - 用乐高思维构建解析器
  • 借助于llm将pdf转化为md文本
  • 循环神经网络RNN原理精讲,详细举例!
  • 【智能体agent】入门之--2.2框架---autoGen
  • Cesium 快速入门(一)快速搭建项目
  • 【05】大恒相机SDK C#开发 —— Winform中采集图像并显示
  • 提示词增强工程(Prompt Enhancement Engineering)白皮书草稿