跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    systemctl 入门

    systemd 是 CentOS 7 以来所有 EL 系统(包括 AlmaLinux、Rocky Linux)默认的初始化系统和服务管理器。它取代了传统的 SysVinit,负责引导系统、管理服务、挂载文件系统等核心任务。systemctl 是与 systemd 交互的主要命令行工具。

    systemd 以 单元(Unit) 为核心概念来管理系统资源。常见的单元类型包括:

    单元类型后缀说明
    Service.service系统服务(如 Nginx、sshd)
    Socket.socket进程间通信套接字
    Target.target一组单元的集合,类似运行级别
    Timer.timer定时触发任务
    Mount.mount文件系统挂载点

    systemd 的单元配置文件通常存放在以下位置:

    • /usr/lib/systemd/system/ — 由软件包安装的单元文件
    • /etc/systemd/system/ — 管理员自定义或覆盖的单元文件(优先级更高)
    启动 Nginx 服务
    sudo systemctl start nginx
    停止 Nginx 服务
    sudo systemctl stop nginx

    重启会先停止再启动服务,适用于配置变更后需要完全重载的场景:

    重启 Nginx 服务
    sudo systemctl restart nginx

    部分服务支持在不中断运行的情况下重新加载配置文件:

    重新加载 Nginx 配置(不中断服务)
    sudo systemctl reload nginx

    如果你不确定服务是否支持 reload,可以使用 reload-or-restart,它会优先尝试 reload,失败时回退为 restart:

    尝试 reload,不支持则 restart
    sudo systemctl reload-or-restart nginx

    status 子命令可以显示服务的运行状态、PID、内存占用以及最近的日志输出:

    查看 Nginx 服务状态
    sudo systemctl status nginx

    输出示例:

    ● nginx.service - The nginx HTTP and reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
    Active: active (running) since Tue 2026-03-24 10:15:30 CST; 2h ago
    Main PID: 1234 (nginx)
    Tasks: 3 (limit: 23456)
    Memory: 5.2M
    CPU: 35ms
    CGroup: /system.slice/nginx.service
    ├─1234 "nginx: master process /usr/sbin/nginx"
    └─1235 "nginx: worker process"

    你也可以使用以下命令快速判断服务状态:

    检查服务是否正在运行
    systemctl is-active nginx
    检查服务是否已启用开机自启
    systemctl is-enabled nginx
    检查服务是否启动失败
    systemctl is-failed nginx
    将 Nginx 设置为开机自动启动
    sudo systemctl enable nginx

    这会在 /etc/systemd/system/ 下创建符号链接,让服务在系统启动时自动运行。

    如果想同时启用并立即启动服务,可以加 --now 参数:

    启用开机自启并立即启动
    sudo systemctl enable --now nginx
    取消 Nginx 开机自启
    sudo systemctl disable nginx

    同样支持 --now 来同时停止服务:

    取消开机自启并立即停止
    sudo systemctl disable --now nginx
    列出所有活动的 service 单元
    systemctl list-units --type=service

    列出所有已安装的服务(含未启动的)

    Section titled “列出所有已安装的服务(含未启动的)”
    列出所有已安装的 service 单元文件
    systemctl list-unit-files --type=service
    查看所有启动失败的单元
    systemctl --failed
    查看 Nginx 的依赖树
    systemctl list-dependencies nginx

    systemd 通过 journald 收集所有服务日志。你可以用 journalctl 快速查看某个服务的日志输出:

    查看 Nginx 服务的全部日志
    sudo journalctl -u nginx
    实时跟踪 Nginx 日志输出
    sudo journalctl -u nginx -f
    查看本次启动以来 Nginx 的日志
    sudo journalctl -u nginx -b

    更多 journalctl 的高级用法请参阅 Journal 日志 章节。

    systemd 使用 target 来代替传统的运行级别。常见目标及其对应关系:

    Target传统运行级别说明
    poweroff.target0关机
    rescue.target1单用户/救援模式
    multi-user.target3多用户命令行模式
    graphical.target5图形界面模式
    reboot.target6重启
    查看当前默认启动目标
    systemctl get-default
    将默认启动目标设为多用户命令行模式
    sudo systemctl set-default multi-user.target
    临时切换到救援模式(不改变默认目标)
    sudo systemctl isolate rescue.target
    操作命令
    启动服务sudo systemctl start <服务名>
    停止服务sudo systemctl stop <服务名>
    重启服务sudo systemctl restart <服务名>
    查看状态sudo systemctl status <服务名>
    开机自启sudo systemctl enable <服务名>
    取消自启sudo systemctl disable <服务名>
    启用并启动sudo systemctl enable --now <服务名>
    列出所有服务systemctl list-units --type=service
    查看失败单元systemctl --failed
    查看服务日志sudo journalctl -u <服务名>