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

青羊区建设厅网站公司网络组建方案

青羊区建设厅网站,公司网络组建方案,网站建设淘宝客模板,网站素材模板一、systemd 概述 1. 定位与作用 init 系统替代品:作为 Linux 系统的第 1 个进程(PID1),替代传统的 SysVinit 和 Upstart,负责管理系统服务、启动流程、资源分配等。统一管理:通过 单元(Unit&…
一、systemd 概述

1. 定位与作用

  • init 系统替代品:作为 Linux 系统的第 1 个进程(PID=1),替代传统的 SysVinit 和 Upstart,负责管理系统服务、启动流程、资源分配等。
  • 统一管理:通过 单元(Unit) 抽象各类系统资源,包括服务(service)、套接字(socket)、设备(device)、挂载点(mount)、目标(target)等。
  • 设计目标:高性能(并行启动)、高可用性、模块化、标准化配置。

2. 核心组件

  • systemd:主程序,作为 init 进程运行。
  • systemctl:核心命令行工具,用于管理单元(启动/停止/重启服务、查看状态等)。
  • systemd-analyze:分析系统启动时间、依赖关系等。
  • journalctl:查看系统日志(与 systemd-journald 日志系统集成)。
  • 其他工具:如 hostnamectl(主机名管理)、timedatectl(时间管理)等。

在这里插入图片描述

二、服务单元(.service)核心概念

服务单元 是 systemd 中最常用的单元类型,用于管理后台服务(如 sshdhttpd)。

三、服务单元文件结构

服务单元文件通常位于:

  • 系统服务/etc/systemd/system/(用户自定义)、/usr/lib/systemd/system/(官方默认)。
  • 用户服务~/.config/systemd/user/(仅当前用户可用)。

文件命名规则服务名.service(如 nginx.service)。

典型文件示例

[Unit]
Description=NGINX Web Server
Documentation=man:nginx(8)
After=network.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
Restart=on-failure
RestartSec=5
User=nginx
Group=nginx
LimitNOFILE=65535[Install]
WantedBy=multi-user.target

WantedBy=multi-user.target:将此服务添加到 multi-user.target(多用户运行级别)的依赖列表中。当系统进入多用户模式时,会自动启动此服务。这相当于传统的 “开机自启” 设置。WantedBy 表示软依赖(通过符号链接实现),如果服务启动失败,不会影响目标的激活。

四、单元文件核心段(Section)
1. [Unit] 段:通用配置
  • Description:服务描述,供用户阅读。
  • Documentation:文档路径(支持 URL、man 手册等)。
  • 依赖关系
    • After=xxx.target:本服务在 xxx.target 之后启动(不检查依赖是否成功)。
    • Before=xxx.target:本服务在 xxx.target 之前启动。
    • Requires=xxx.service:强依赖,若依赖的服务启动失败,本服务也会失败(如 Requires=network.service)。
    • Wants=xxx.service:弱依赖,依赖的服务启动失败不影响本服务(如 Wants=network-online.target)。
    • BindsTo=xxx.service:与依赖服务生命周期绑定(同生共死)。
  • 冲突关系
    • Conflicts=xxx.service:禁止与指定服务同时运行(如 Conflicts=apache2.service)。
2. [Service] 段:服务核心配置
  • Type=:定义服务进程模型(关键配置):

    类型说明典型场景
    simple主进程为前台进程(默认值),systemd 认为服务启动成功当 ExecStart 运行后。大多数现代服务(如 Node.js)
    forking主进程启动后 fork 子进程,父进程退出(通过 PIDFile 指定子进程 PID)。传统 Unix 守护进程(如 Nginx)
    oneshot一次性任务(执行完 ExecStart 即退出),需配合 RemainAfterExit=yes 保持单元激活。数据备份、初始化脚本
    dbus需获取 D-Bus 名称后才算启动成功(通过 BusName= 指定名称)。依赖 D-Bus 的服务
    notify通过 sd_notify 接口通知 systemd 启动完成(需程序支持)。支持通知协议的服务
    idle所有非空闲任务完成后才启动服务。低优先级任务(如日志轮转)
  • 进程管理

    • ExecStart=:启动服务的命令或脚本(必填)。
    • ExecStartPre=:启动前执行的命令(可多次定义,按顺序执行)。
    • ExecStartPost=:启动后执行的命令。
    • ExecReload=:重新加载配置的命令(如 kill -HUP $PID)。
    • ExecStop=:停止服务的命令(默认 kill -TERM $MAINPID)。
    • ExecStopPost=:停止后执行的命令。
    • PIDFile=:指定 PID 文件路径(配合 Type=forking 使用)。
  • 重启策略

    • Restart=:控制服务崩溃后的重启行为,可选值:
      • no(默认):不重启。
      • on-success:仅在正常退出时重启(非错误退出不重启)。
      • on-failure:异常退出时重启(如退出码非 0、被信号终止)。
      • on-abnormal:因信号(非 SIGTERM/SIGKILL)或超时退出时重启。
      • on-watchdog:触发 watchdog 超时(需配置 WatchdogSec=)时重启。
      • always:无论何种原因退出,始终重启。
    • RestartSec=:重启前的等待时间(默认 10s)。
    • StartLimitInterval=:限制单位时间内的重启次数(防雪崩,如 StartLimitInterval=5s)。
  • 资源限制

    • CPUQuota=:限制 CPU 使用率(如 CPUQuota=50%,需内核支持 CGroups)。
    • MemoryLimit=:限制内存使用(如 MemoryLimit=1G)。
    • LimitNOFILE=:最大打开文件数(如 LimitNOFILE=10240)。
    • TasksMax=:限制进程数(如 TasksMax=500)。
  • 安全设置

    • User=/Group=:以指定用户/组运行服务(避免 root 权限)。
    • PrivateTmp=:为服务创建独立的临时目录(默认 yes,隔离文件系统)。
    • ProtectSystem=:限制对系统文件的访问(如 ProtectSystem=strict 禁止访问 /usr//etc)。
  • 环境变量

    • Environment=:直接设置环境变量(如 Environment="HTTP_PROXY=http://proxy.example.com")。
    • EnvironmentFile=:从文件读取环境变量(如 EnvironmentFile=/etc/sysconfig/nginx)。
3. [Install] 段:安装与激活配置
  • WantedBy=target:将服务添加到指定目标的依赖列表(最常用,相当于“开机自启”)。
    • 示例:WantedBy=multi-user.target(多用户模式启动)、WantedBy=graphical.target(图形界面模式启动)。
  • RequiredBy=target:强依赖,目标启动时必须启动本服务(慎用,避免循环依赖)。
  • Alias=:为服务创建别名(如 Alias=nginx-server.service)。
五、服务管理常用命令(systemctl)
操作命令示例说明
查看所有服务systemctl list-units --type=service --all包括活跃、非活跃、失败的服务
查看活跃服务systemctl list-units --type=service仅显示运行中的服务
启动服务systemctl start nginx.service立即启动服务
停止服务systemctl stop nginx.service立即停止服务
重启服务systemctl restart nginx.service先停止再启动
重新加载配置systemctl reload nginx.service不重启服务,仅重新加载配置
查看服务状态systemctl status nginx.service显示运行状态、日志等
启用开机自启systemctl enable nginx.service写入默认运行目标(如 multi-user.target
禁用开机自启systemctl disable nginx.service移除开机自启配置
查看服务依赖关系systemctl list-dependencies nginx.service显示直接/间接依赖
临时激活服务(重启后失效)systemctl start nginx.service --now仅本次启动有效
查看用户服务systemctl --user list-units --type=service管理当前用户的服务
六、高级特性与最佳实践
1. 服务依赖与启动顺序
  • 避免循环依赖:如 A.Requires=BB.Requires=A,systemd 会拒绝启动。
  • 按需启动(Socket 激活):通过 .socket 单元监听端口,仅当有请求时启动服务(如 sshd.socket 激活 sshd.service)。
    • 优势:减少资源占用,延迟启动服务。
2. 资源隔离与容器化
  • systemd-nspawn:轻量级容器工具,基于 systemd 实现进程隔离。
  • Scope 单元:动态创建的临时单元(如 systemd-run --scope --user my-script.sh),用于短期任务。
3. 日志管理(journalctl)
  • 服务日志默认由 systemd-journald 收集,可通过 journalctl 查看:
    journalctl -u nginx.service       # 查看指定服务日志  
    journalctl -u nginx --since today # 查看今日日志  
    journalctl -f -u nginx           # 实时跟踪日志  
    
  • 配置日志持久化:修改 /etc/systemd/journald.conf,设置 Storage=persistent 并重启 systemd-journald 服务。
4. 系统启动目标(Target)
  • 传统运行级别映射
    systemd 目标传统运行级别说明
    graphical.target5图形界面多用户模式
    multi-user.target3无图形界面多用户模式
    rescue.target1单用户救援模式
    emergency.target0紧急 Shell(无文件系统挂载)
    shutdown.target6关机
  • 切换目标
    systemctl isolate multi-user.target  # 切换至多用户模式  
    systemctl set-default graphical.target # 设置默认启动目标为图形界面  
    
5. 用户服务(User Services)
  • 用于管理当前用户的后台进程(如个人脚本、GUI 工具),优势:
    • 无需 root 权限,随用户登录自动启动。
    • 配置文件位于 ~/.config/systemd/user/
  • 示例:定义一个用户级别的定时备份服务:
    [Unit]
    Description=Daily Backup Service[Service]
    Type=oneshot
    ExecStart=/home/user/backup.sh[Install]
    WantedBy=default.target
    
    激活:systemctl --user enable --now daily-backup.service
七、故障排查与性能优化
  1. 启动时间分析
    systemd-analyze blame  # 按耗时排序启动项  
    systemd-analyze plot > boot.svg  # 生成启动时间可视化图表  
    
  2. 服务状态诊断
    • systemctl status service-name 查看运行状态,注意 Active: 字段(active(running) 表示正常,active(failed) 表示异常)。
    • 检查日志中是否有错误信息(journalctl -u service-name)。
  3. 依赖循环排查
    systemctl list-dependencies --reverse service-name  # 反向查看依赖链  
    
  4. 资源限制调优
    • 若服务频繁崩溃,尝试增加 MemoryLimit= 或调整 Restart= 策略。
    • 使用 systemd-cgtop 实时监控服务资源占用。
八、自定义服务示例
[Unit]
Description=ROS2 Vision Launch Service
After=network.target[Service]
Type=simple
User=kyleExecStartPre=/bin/sleep 5
ExecStart=/bin/bash -c 'cd /home/kyle/RM/Observation_of_whole_robot && source install/setup.bash && ros2 launch rm_vision_bringup vision_bringup.launch.py'Restart=always
RestartSec=5
# 防止服务重启过快导致资源耗尽
StartLimitInterval=60s
StartLimitBurst=3[Install]
WantedBy=multi-user.target

启用并启动服务

sudo systemctl daemon-reload   #重载 systemd 配置
sudo systemctl enable ros2_vision.service  #激活服务
sudo systemctl start ros2_vision.service

检查服务的状态

sudo systemctl status ros2_vision.service
九、注意事项与陷阱
  1. 避免直接修改官方服务文件
    • 官方服务文件位于 /usr/lib/systemd/system/,修改后可能被系统更新覆盖。
    • 正确做法:通过 systemctl edit service-name 创建覆盖文件(存于 /etc/systemd/system/service-name.d/)。
  2. Type 配置错误
    • Type=forking 但未指定 PIDFile=,systemd 会误认为服务启动失败。
  3. 环境变量作用域
    • EnvironmentFile= 引用的文件需注意权限(建议权限 644,避免敏感信息泄露)。
  4. 资源限制的内核支持
    • CGroups 相关配置(如 MemoryLimit=)需内核启用 CGroups v2,否则可能不生效。
十、延伸知识点(非服务单元,但需了解)
  • Socket 单元(.socket):监听端口或 Unix 套接字,触发对应服务启动(如 dbus.socket)。
  • Target 单元(.target):逻辑分组,用于组织多个服务(如 graphical.target 包含桌面环境相关服务)。
  • Timer 单元(.timer):定时任务,替代传统 cron(如 logrotate.timer)。
  • Mount 单元(.mount):管理文件系统挂载(如自动挂载 NFS 共享)。
总结:systemd 核心优势
  • 并行启动:通过依赖关系分析,并行启动无依赖的服务,大幅缩短启动时间。
  • 标准化配置:统一的单元文件格式,易于维护和迁移。
  • 强大的管理工具链systemctljournalctlsystemd-analyze 等工具覆盖全生命周期管理。
  • 资源精细化控制:通过 CGroups 实现 CPU、内存、进程数等资源的隔离与限制。
http://www.dtcms.com/wzjs/325380.html

相关文章:

  • 创新驱动发展战略意义上海优质网站seo有哪些
  • 网站源码交易网网站怎样优化文章关键词
  • wordpress ie兼容郑州seo顾问外包
  • wordpress网站界面设计如何进行百度推广
  • 怎样购买网站程序免费网站站长查询
  • png图片可以做网站图标吗关键词挖掘爱网站
  • 专业做网站开发站长工具精品
  • 医院网站可以自己做吗郑州seo技术
  • 网站开发定价抖音权重查询
  • 广州物流网站建设站长工具天美传媒
  • 王建设的网站google浏览器网页版
  • 长沙seo排名公司seo是什么姓
  • 西安做网站企业北京seo邢云涛
  • 高端的金融行业网站开发seo综合查询工具可以查看哪些数据
  • 武汉网站建设网站建设友链交换平台源码
  • 做ppt用的音效网站对网络营销的认识
  • 大型网站建设规范网址如何下载视频
  • 天津建设工程信息网b1新北路站疫情防控最新政策
  • 优秀设计集锦网站香港百度广告
  • 房山成都网站建设什么叫外链
  • 影响网站alexa排名的主要因素有百度快速优化软件排名
  • 网站上做皮肤测试开发网站的流程是
  • 专业做网站的公司哪家好运营推广计划
  • 品牌网站制作流程图百度推广怎么收费标准案例
  • 如何和其他网站做友情链接seo技术博客
  • 张家口网站开发最近新闻头条最新消息
  • 中国企业库济南网站优化排名
  • 江苏纬信网站建设nba最新消息球员交易
  • 软件开发工具的作用广东企业网站seo哪里好
  • wordpress如何清空关键词在线优化