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

【基础】每天掌握一个Linux命令 - systemctl

目录

    • 工具概述
    • 安装方式
    • 核心功能
    • 基础用法
      • systemctl常用参数
        • 服务管理参数
        • 服务状态参数
        • 服务开机启动参数
        • 服务列表参数
        • 系统控制参数
        • 依赖关系参数
        • 目标单元参数
        • 重载参数
        • 其他常用参数
      • systemctl 服务单元文件详解
        • 服务单元文件的基本结构
        • `[Unit]` 部分常用字段
        • `[Service]` 部分常用字段
        • `[Install]` 部分常用字段
        • 服务类型 (`Type`) 详解
        • 重启策略 (`Restart`) 详解
        • 单元文件示例
        • 创建和修改单元文件
    • 注意事项

【基础】每天掌握一个Linux命令 - systemctl

在Linux系统中,服务管理是一项重要且频繁的工作,比如启动、停止、重启服务,查看服务状态等。systemctl命令就像系统服务的“全能管家”,能高效处理这些任务,无论是日常运维,还是应对生产环境的服务管理需求,都能轻松搞定。

工具概述

systemctl是systemd系统和服务管理器的命令行工具,systemd是Linux系统中用于初始化系统的程序,取代了传统的init。systemctl可以用来管理系统服务、查看系统状态、控制系统资源等,它提供了统一的接口来管理服务的启动、停止、重启、状态查询等操作,极大地提高了服务管理的效率和便利性。

安装方式

在大多数现代Linux发行版(如CentOS 7+、Ubuntu 16.04+、Debian 8+等)中,systemd和systemctl是默认安装的,无需额外安装。如果系统没有安装systemd,可根据不同发行版使用对应的包管理工具进行安装:

  • Debian/Ubuntu
sudo apt-get install systemd
  • CentOS/RHEL
sudo yum install systemd

核心功能

功能类型功能描述
服务管理对系统服务进行启动、停止、重启、重载配置、设置开机自启等操作
系统控制控制系统关机、重启、休眠、唤醒等状态
状态查询查看系统状态、服务状态、系统日志等信息
资源管理管理系统资源,如挂载点、交换空间等

基础用法

好的,我将为你详细介绍systemctl的常用参数及其使用方法。这些参数可以帮助你更灵活地管理系统服务和资源。

systemctl常用参数

服务管理参数
参数描述示例
start启动指定服务systemctl start nginx
stop停止指定服务systemctl stop nginx
restart重启指定服务systemctl restart nginx
reload重新加载服务配置(不中断服务)systemctl reload nginx
reload-or-restart优先重新加载配置,失败则重启服务systemctl reload-or-restart nginx
try-restart仅在服务运行时重启(避免启动已停止的服务)systemctl try-restart nginx
服务状态参数
参数描述示例
status显示服务详细状态systemctl status nginx
is-active检查服务是否正在运行systemctl is-active nginx
is-failed检查服务是否失败systemctl is-failed nginx
show显示服务的所有属性systemctl show nginx
show -p Property显示特定属性值systemctl show -p ExecStart nginx
服务开机启动参数
参数描述示例
enable设置服务开机自启systemctl enable nginx
disable禁用服务开机自启systemctl disable nginx
is-enabled检查服务是否开机自启systemctl is-enabled nginx
reenable重新启用服务(重新创建链接)systemctl reenable nginx
preset根据发行版策略设置服务状态systemctl preset nginx
服务列表参数
参数描述示例
list-units列出所有活动单元systemctl list-units
list-units --type=service仅列出服务单元systemctl list-units --type=service
list-units --type=target仅列出目标单元systemctl list-units --type=target
list-units --all列出所有单元(包括非活动的)systemctl list-units --all
list-unit-files列出所有单元文件systemctl list-unit-files
系统控制参数
参数描述示例
poweroff关闭系统systemctl poweroff
reboot重启系统systemctl reboot
halt停止系统systemctl halt
suspend挂起系统(睡眠模式)systemctl suspend
hibernate休眠系统(磁盘休眠)systemctl hibernate
hybrid-sleep混合睡眠(同时休眠和挂起)systemctl hybrid-sleep
emergency进入紧急模式systemctl emergency
rescue进入救援模式systemctl rescue
依赖关系参数
参数描述示例
list-dependencies显示单元的依赖关系systemctl list-dependencies nginx
list-dependencies --reverse显示反向依赖关系systemctl list-dependencies --reverse nginx
list-dependencies --after显示在指定单元后启动的单元systemctl list-dependencies --after nginx
list-dependencies --before显示在指定单元前启动的单元systemctl list-dependencies --before nginx
目标单元参数
参数描述示例
get-default显示默认运行级别systemctl get-default
set-default设置默认运行级别systemctl set-default multi-user.target
isolate切换到指定运行级别systemctl isolate graphical.target
重载参数
参数描述示例
daemon-reload重新加载systemd管理器配置systemctl daemon-reload
daemon-reexec重新执行systemd进程systemctl daemon-reexec
其他常用参数
参数描述示例
mask禁用并阻止服务启动systemctl mask nginx
unmask取消服务屏蔽systemctl unmask nginx
reset-failed重置失败的服务状态systemctl reset-failed nginx
kill向服务发送信号systemctl kill -s SIGTERM nginx
cat显示单元文件内容systemctl cat nginx
edit编辑单元文件(创建覆盖文件)systemctl edit nginx
add-wants添加启动依赖systemctl add-wants multi-user.target nginx
add-requires添加必需依赖systemctl add-requires multi-user.target nginx

这些参数涵盖了systemctl的主要功能,可以帮助你高效管理Linux系统中的服务和资源。根据实际需求选择合适的参数组合使用,能够满足各种复杂的系统管理场景。

systemctl 服务单元文件详解

服务单元文件(.service 文件)是 systemd 管理服务的核心配置文件,理解其各个字段的含义和作用对于系统管理至关重要。下面我将详细解释这些字段的用途和配置方法。

服务单元文件的基本结构

服务单元文件分为三个主要部分:

  • [Unit]:通用配置,定义单元的描述、依赖关系和条件
  • [Service]:服务特定配置,定义服务的启动方式、运行参数等
  • [Install]:安装配置,定义服务如何安装(如开机自启)
[Unit] 部分常用字段
字段描述示例
Description服务的简短描述Description=The NGINX HTTP and reverse proxy server
Documentation服务的文档链接Documentation=man:nginx(8) http://nginx.org/en/docs/
After指定服务启动顺序(在哪些服务后启动)After=network.target remote-fs.target nss-lookup.target
Before指定服务启动顺序(在哪些服务前启动)Before=httpd.service
Wants弱依赖关系(依赖服务启动失败不影响当前服务)Wants=network-online.target
Requires强依赖关系(依赖服务启动失败则当前服务也失败)Requires=network.target
Conflicts冲突关系(不能与指定服务同时运行)Conflicts=apache2.service
ConditionPathExists条件检查(路径存在时才启动服务)ConditionPathExists=/etc/nginx/nginx.conf
AssertPathExists断言检查(路径不存在则服务启动失败)AssertPathExists=/usr/sbin/nginx
[Service] 部分常用字段
字段描述示例
Type服务类型,决定启动方式Type=forking
ExecStart启动服务的命令ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecStartPre启动前执行的命令ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStartPost启动后执行的命令ExecStartPost=/usr/bin/rm -f /run/nginx.pid.lock
ExecStop停止服务的命令ExecStop=/usr/sbin/nginx -s stop
ExecStopPost停止后执行的命令ExecStopPost=/usr/bin/rm -f /run/nginx.pid
ExecReload重新加载配置的命令ExecReload=/usr/sbin/nginx -s reload
Restart何时重启服务Restart=on-failure
RestartSec重启前等待的时间RestartSec=5
PIDFilePID文件路径PIDFile=/run/nginx.pid
TimeoutSec启动/停止超时时间TimeoutSec=300
Environment设置环境变量Environment=NGINX_CONF_D=/etc/nginx/conf.d
User运行服务的用户User=nginx
Group运行服务的用户组Group=nginx
WorkingDirectory工作目录WorkingDirectory=/var/www/html
LimitNOFILE文件描述符限制LimitNOFILE=10240
PrivateTmp是否使用独立的临时目录PrivateTmp=true
ProtectSystem保护系统文件ProtectSystem=full
NoNewPrivileges禁止获取新权限NoNewPrivileges=true
[Install] 部分常用字段
字段描述示例
WantedBy定义服务如何被启用(弱依赖)WantedBy=multi-user.target
RequiredBy定义服务如何被启用(强依赖)RequiredBy=nginx.service
Alias服务的别名Alias=webserver.service
Also启用此服务时同时启用的其他服务Also=nginx-common.service
服务类型 (Type) 详解

服务类型决定了 systemd 如何启动和监控服务:

类型描述适用场景
simple默认值,直接启动主进程直接执行单一命令的服务
forking服务在后台运行(通过 fork())传统守护进程(如 Apache、Nginx)
oneshot一次性任务,执行后退出系统初始化脚本、备份任务
dbus通过 D-Bus 注册启动需要 D-Bus 通信的服务
notify通过 sd_notify() 通知启动完成使用 systemd 通知 API 的服务
idle所有任务完成后才启动低优先级服务
重启策略 (Restart) 详解
策略描述
no默认值,不重启服务
on-success仅在正常退出时重启
on-failure在异常退出时重启(如信号终止、超时等)
on-abnormal在异常终止时重启(如信号终止)
on-abort仅在程序崩溃时重启
on-watchdog仅在看门狗超时时重启
always无论如何都重启
单元文件示例

以下是一个典型的 Nginx 服务单元文件示例:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
User=nginx
Group=nginx
LimitNOFILE=10240[Install]
WantedBy=multi-user.target

这个配置文件定义了 Nginx 服务的基本属性、启动命令、依赖关系和安装方式。通过修改这些字段,你可以根据实际需求定制服务的行为。

创建和修改单元文件

要创建或修改服务单元文件,可以使用以下命令:

  1. 创建新的单元文件:

    sudo systemctl edit --force --full <服务名>.service
    
  2. 修改现有单元文件(创建覆盖文件):

    sudo systemctl edit <服务名>.service
    
  3. 修改完成后,重新加载 systemd 管理器:

    sudo systemctl daemon-reload
    
  4. 查看单元文件的完整内容:

    systemctl cat <服务名>.service
    

通过理解和正确配置服务单元文件,你可以更精细地控制服务的行为,提高系统的可靠性和安全性。

注意事项

  1. 使用systemctl命令需要root权限或通过sudo执行,否则会因权限不足导致操作失败。
  2. 重新加载配置(reload)和重启服务(restart)有区别,reload不会中断服务连接,适用于配置修改后无需重启服务的情况;restart会先停止服务再启动,会造成短暂的服务中断。
  3. 在使用通配符管理多个服务时要谨慎,避免误操作影响到其他重要服务。
  4. 不同Linux发行版对systemctl命令的支持可能存在细微差异,操作前最好先在测试环境进行验证。
http://www.xdnf.cn/news/13891.html

相关文章:

  • PurgeCSS:CSS瘦身优化性能终极解决方案
  • Geeksend 邮箱验证:低成本验证
  • 文件的秒传、分片上传以及断点续传 || Redis缓存减轻数据库读写压力
  • 2.0 第一个Node节点
  • 6.12 操作系统面试题 进程管理
  • Vue 3 前端和 Spring Boot 后端生成 Docker 镜像的标准做法
  • Spring Boot 整合 Smart-Doc:零注解生成 API 文档,告别 Swagger
  • 电压互感器类型与消谐器需求的关联
  • LeetCode 137 有限状态自动机解法原理详解
  • 测试:AWS SDK for JavaScript v2 迁移到 v3
  • 帆软报表实现层层下钻继承上上层报表参数
  • ollama+docker+dify配置指南
  • CQL3D输入文件及参数解释
  • linux中执行脚本命令的source和“.”和“./”的区别
  • 校园网数据安全防线
  • sed命令在修改Rocky Linux镜像源配置文件中的作用:
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月12日第106弹
  • 晶圆搬运机器人与RFID半导体读卡器携手赋能半导体制造高效变革
  • 探索铸铁试验平台在制造行业的卓越价值
  • HALCON第一讲->数据结构、语法规则与思路
  • 深度学习网络入侵检测系统警报
  • RX Clock Correction Attributes
  • 使用freemarker模板 生成 word文档
  • PMP证--开篇
  • AI的镜像:人工智能如何重塑人类认知边界
  • 路由交换技术-思科拓扑搭建
  • 深度解析SerpAPI:AI时代的智能搜索引擎集成方案
  • 农田实时监测与管理系统开发
  • byte数组变量转int变量
  • 一[2]、ubuntu18.04环境 yolov8 + realsenseD435i 实时效果测试