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

system.conf linux用于启动和管理系统进程的初始化系统和服务管理器的配置文件

一. 概述:这是什么文件?

这个文件是 systemd 的主配置文件systemd 是现代 Linux 发行版(包括 Ubuntu)中用于启动和管理系统进程的初始化系统和服务管理器。你可以把它看作是系统的“大管家”(PID 1),它负责启动所有其他程序,并监控它们的状态。

system.conf 文件中的配置项定义了 systemd 管理器自身的行为,以及所有由它管理的服务(services)、挂载点(mounts)、套接字(sockets)等的全局默认值

二. 重要概念(来自文件头部的注释)

在深入每个配置项之前,我们先理解文件头部注释传达的关键信息:

  1. 显示的是编译时默认值:文件中大多数被 # 注释掉的行,展示的是 systemd 在编译时设定的默认值。你的系统当前就是按照这些默认值在运行。
  2. 如何修改配置
    • 不推荐直接修改 /etc/systemd/system.conf 这个文件。因为系统更新时,这个文件可能会被覆盖,导致你的修改丢失。
    • 推荐的方法是在 /etc/systemd/system.conf.d/ 目录下创建新的 .conf 文件(例如 my-overrides.conf)。systemd 会读取 system.conf,然后再读取 .conf.d 目录下的所有文件(按字母顺序),后读取的配置会覆盖之前的。这使得你的自定义配置与系统默认配置分离,便于管理和升级。
    • 但是我现在其实是用的不推荐的方法,最后按照下面的命令打印一下看一下配置生效了就成。
  3. 如何查看最终生效的配置:使用命令 systemd-analyze cat-config systemd/system.conf 可以看到合并了所有 drop-in 文件后,最终生效的完整配置。
  4. 权威文档:最详细的解释总是在 man 手册里,可以通过 man systemd-system.conf 命令查看。

三. system.conf 文件的主要内容

[Manager]
#LogLevel=info
#LogTarget=journal-or-kmsg
#LogColor=yes
#LogLocation=no
#LogTime=no
#DumpCore=yes
#ShowStatus=yes
#CrashChangeVT=no
#CrashShell=no
#CrashReboot=no
#CtrlAltDelBurstAction=reboot-force
#CPUAffinity=
#NUMAPolicy=default
#NUMAMask=
#RuntimeWatchdogSec=0
#RebootWatchdogSec=10min
#KExecWatchdogSec=0
#WatchdogDevice=
#CapabilityBoundingSet=
#NoNewPrivileges=no
#SystemCallArchitectures=
#TimerSlackNSec=
#StatusUnitFormat=description
#DefaultTimerAccuracySec=1min
#DefaultStandardOutput=journal
#DefaultStandardError=inherit
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s
#DefaultTimeoutAbortSec=
#DefaultRestartSec=100ms
#DefaultStartLimitIntervalSec=10s
#DefaultStartLimitBurst=5
#DefaultEnvironment=
#DefaultCPUAccounting=no
#DefaultIOAccounting=no
#DefaultIPAccounting=no
#DefaultBlockIOAccounting=no
#DefaultMemoryAccounting=yes
#DefaultTasksAccounting=yes
#DefaultTasksMax=15%
#DefaultLimitCPU=
#DefaultLimitFSIZE=
#DefaultLimitDATA=
#DefaultLimitSTACK=
#DefaultLimitCORE=
#DefaultLimitRSS=
#DefaultLimitNOFILE=1024:524288
#DefaultLimitAS=
#DefaultLimitNPROC=
#DefaultLimitMEMLOCK=
#DefaultLimitLOCKS=
#DefaultLimitSIGPENDING=
#DefaultLimitMSGQUEUE=
#DefaultLimitNICE=
#DefaultLimitRTPRIO=
#DefaultLimitRTTIME=
#DefaultOOMPolicy=stop

在这里,我们来详细解析一下这个 system.conf 文件。

[Manager] 配置项详解

这个文件只有一个配置段 [Manager],下面我们逐一解释其中的配置项。

日志与状态 (Logging & Status)
  • #LogLevel=info

    • 作用:设置 systemd 管理器自身的日志级别。
    • 可选值debug, info, notice, warning, err, crit, alert, emerginfo 是一个比较均衡的级别,记录常规信息和错误。如果系统出现疑难杂症,可以临时设置为 debug 以获取更详细的日志。
  • #LogTarget=journal-or-kmsg

    • 作用:设置日志输出的目标。
    • 默认值含义:优先输出到 systemd-journaldjournal),如果 journald 不可用,则输出到内核日志缓冲区(kmsg)。其他可选值还有 console, syslog 等。
  • #LogColor=yes

    • 作用:在支持的终端上,为日志输出添加颜色,以区分日志级别(如错误用红色,警告用黄色)。
  • #LogLocation=no

    • 作用:是否在日志中包含代码文件的位置信息(文件名和行号)。开启此项主要用于开发和调试 systemd 本身。
  • #DumpCore=yes

    • 作用:当一个进程崩溃时,systemd 是否为其生成一个 core dump 文件。core dump 是进程崩溃时内存状态的快照,对于调试程序崩溃原因至关重要。
  • #ShowStatus=yes

    • 作用:在系统启动和关闭过程中,是否显示服务的状态更新信息。设置为 no 会让启动过程看起来更“安静”。
系统崩溃与特殊按键处理 (Crash & Special Keys)
  • #CrashChangeVT=no

    • 作用:当 systemd 自身或关键服务崩溃时,是否自动切换到一个新的虚拟终端(VT)。
  • #CrashShell=no

    • 作用:当系统崩溃时,是否启动一个调试用的 shell。这是一个高级调试功能。
  • #CrashReboot=no

    • 作用:当系统崩溃时,是否自动重启系统。
  • #CtrlAltDelBurstAction=reboot-force

    • 作用:定义当用户快速、连续地按下 Ctrl+Alt+Delete 组合键时(7次/2秒内)系统的行为。
    • 默认值含义reboot-force 表示强制重启,不经过正常关闭流程,类似于按硬件重启按钮。其他选项有 poweroff-force (强制关机) 等。
性能与调度 (Performance & Scheduling)
  • #CPUAffinity=

    • 作用:将 systemd 管理器进程(PID 1)以及由它派生的子进程(默认情况下)绑定到指定的 CPU 核心上。例如 CPUAffinity=0 1 表示绑定到 CPU 0 和 CPU 1。
  • #RuntimeWatchdogSec=0#RebootWatchdogSec=10min

    • 作用:配置硬件看门狗(Watchdog)。看门狗是一个硬件计时器,如果系统在规定时间内没有“喂狗”(重置计时器),看门狗就会强制重启系统。
    • RuntimeWatchdogSecsystemd “喂狗”的间隔。0 表示禁用。
    • RebootWatchdogSec:在正常关机过程中,允许系统完成关机操作的最大时间。超过这个时间,看门狗会强制重启。
服务的全局默认值 (Defaults for all Units)

这部分是最重要的,它为系统上所有 *.service 文件设置了默认行为,除非服务文件自己覆盖了这些设置。

超时与重启 (Timeouts & Restart)
  • DefaultTimeoutStartSec=15s

  • DefaultTimeoutStopSec=15s

    • 作用:这两项在你的配置文件中是生效的(没有被注释掉)。它们定义了启动和停止一个服务的默认超时时间。
    • DefaultTimeoutStartSec=15s:如果一个服务在启动后 15 秒内没有报告“启动成功”,systemd 会认为它启动失败。
    • DefaultTimeoutStopSec=15s:如果一个服务在收到停止信号后 15 秒内没有完全退出,systemd 会强制杀死它(SIGKILL)。
  • #DefaultRestartSec=100ms

    • 作用:如果一个服务被配置为自动重启(Restart= 选项),在尝试重启之前,systemd 会等待这里设定的时间。
启动频率限制 (Start Limits)
  • #DefaultStartLimitIntervalSec=10s
  • #DefaultStartLimitBurst=5
    • 作用:这是一组防止服务因反复失败而无限重启的保护机制。
    • 含义:在 10 秒(IntervalSec)内,一个服务最多允许启动 5 次(Burst)。如果超过这个频率,systemd 会停止尝试重启该服务,并将其标记为失败状态。
环境与I/O (Environment & I/O)
  • #DefaultStandardOutput=journal

    • 作用:所有服务的标准输出(STDOUT)默认重定向到哪里。journal 表示发送给 systemd-journald
  • #DefaultStandardError=inherit

    • 作用:所有服务的标准错误(STDERR)默认重定向到哪里。inherit 表示使用与标准输出相同的设置。
资源统计 (Resource Accounting)

这些选项控制 systemd 是否为每个服务启用资源使用情况的统计。开启后,你可以通过 systemd-cgtopsystemctl status <service> 查看每个服务消耗的资源。

  • #DefaultCPUAccounting=no:统计 CPU 时间。
  • #DefaultIOAccounting=no:统计块设备 I/O。
  • #DefaultIPAccounting=no:统计网络流量。
  • #DefaultMemoryAccounting=yes(默认开启) 统计内存使用量。
  • #DefaultTasksAccounting=yes(默认开启) 统计任务(线程/进程)数量。
资源限制 (Resource Limits - cgroups/ulimit)

这些选项为所有服务设置了默认的资源限制,功能类似于 shell 中的 ulimit 命令,底层通过 cgroups 实现。

  • #DefaultTasksMax=15%

    • 作用:一个服务默认可以创建的最大任务数(进程+线程)。可以是绝对数值,也可以是系统总任务数上限的百分比。15% 是一个相当宽松的默认值。
  • #DefaultLimitNOFILE=1024:524288

    • 作用:设置默认的最大打开文件句柄数。
    • 格式软限制:硬限制
      • 软限制 (Soft Limit):普通程序看到的限制,可以由程序自己调高,但不能超过硬限制。
      • 硬限制 (Hard Limit):由特权进程(如 root)设定的绝对上限。
    • 这个设置对于数据库、Web 服务器等需要处理大量并发连接的应用非常重要。
  • 其他 DefaultLimit...:如 DefaultLimitCPU (CPU时间), DefaultLimitFSIZE (文件大小), DefaultLimitDATA (数据段大小), DefaultLimitSTACK (栈大小), DefaultLimitCORE (Core dump 文件大小), DefaultLimitNPROC (进程数) 等,都是对不同系统资源的默认限制。

  • #DefaultOOMPolicy=stop

    • 作用:当服务所在的 cgroup 发生内存不足(Out-Of-Memory)时,系统应该如何处理。
    • stop (默认): 内核的 OOM killer 会杀死该服务内的进程,并且 systemd 会干净地停止该服务。
    • kill: 内核直接杀死进程,但 systemd 不会改变服务的状态,可能会导致服务进入一个不一致的状态。

总结

system.confsystemd 的大脑中枢配置文件,它掌管着 systemd 自身的行为和所有系统服务的全局默认设置

  • 你提供的文件显示了大部分 systemd 的编译时默认值,这些值在你的系统上正在默默工作。
  • 唯一生效的自定义配置DefaultTimeoutStartSec=15sDefaultTimeoutStopSec=15s,这可能是发行版(Ubuntu)为了更快的启动/关闭体验而设置的。
  • 如果你需要调整任何全局设置(例如,为所有服务提高文件句柄数限制),最佳实践是在 /etc/systemd/system.conf.d/ 目录下创建一个新文件来进行修改,而不是直接编辑主文件。
http://www.lryc.cn/news/606201.html

相关文章:

  • MySQL 8.0 OCP 1Z0-908 题目解析(38)
  • NFLSOI 7.25 题解
  • 2025电赛e题:openmv识别过程丢失矩形
  • laravel下phpunit的使用
  • Web开发-PHP应用Cookie脆弱Session固定Token唯一身份验证数据库通讯
  • 分享低功耗单火线开关语音识别方案
  • Python 程序设计讲义(49):组合数据类型——字典类型:字典的方法
  • Linux/Ubuntu 系统中打开火狐firefox、chromium浏览器失败
  • 33.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--记账
  • Python Day20 os模块 和 文件操作 及 例题分析
  • 智能文本抽取技术:精准识别、定位并提取出关键信息
  • 学以致用——用Docker搭建ThinkPHP开发环境
  • linux线程互斥和同步
  • 在处理大数据列表渲染时,React 虚拟列表是提升性能的关键技术,但在实际实现中常遇到渲染抖动和滚动定位偏移等问题。
  • 大语言模型信息抽取系统解析
  • Tomcat,WebLogic等中间件漏洞实战解析
  • C++异常处理的成本:理解与优化
  • MySQL转PostgreSQL迁移实战:从语法错误到完美兼容
  • AI学习笔记三十三:基于Opencv的单目标跟踪
  • vue3 v-html绑定数据,点击sub实现popover效果
  • STM32 USB 设备中间件 tinyusb
  • 超宽带测距+测角+无线通信一体化模组:智能门锁、智能遥控器、AR头戴、智能穿戴
  • 融媒体中心网络安全应急预案(通用技术框架)
  • Vmvare虚拟机的网络不可达问题
  • Spring Boot 异常处理:从全局捕获到优化用户体验!
  • 爱心烟花浪漫立方体轮播图 - 用代码表达爱意
  • 为Github Copilot创建自定义指令/说明/注意事项
  • 决策树实现回归任务
  • 基于Spring Boot实现中医医学处方管理实践
  • 【Agent,智能,workflow】