• Linux 初始化系统(init)- systemd


    wikipedia
    浅析 Linux 初始化 init 系统
    systemd 中文手册
    fedoraproject - systemd

    1. Systemd 简介

    Systemd 是 Linux 系统的初始化系统。

    提高启动速度

    通过并行启动和减少启动进程,且采用了 socket / D-Bus activation 激活等技术,实现了较快的启动速度。

    管理进程的生命周期

    init 初始化系统的一个重要职责就是跟踪和管理服务进程的生命周期。不仅要启动服务,同时也能够停止服务。

    Systemd 采用 Linux 的 Cgroup 特性跟踪和管理进程的生命周期。当停止服务时,通过查询 CGroup,systemd 可以确保找到所有的相关进程,从而干净地停止服务。

    当进程创建子进程时,子进程会继承父进程的 CGroup。因此无论服务如何启动新的子进程,所有的这些相关进程都会属于同一个 CGroup,systemd 只需要简单地遍历指定的 CGroup 即可正确地找到所有的相关进程,将它们一一停止即可。

    日志服务

    systemd 自带日志服务 journald,该日志服务的设计初衷是克服现有的 syslog 服务的缺点:

    • syslog 不安全,每一个本地进程都可以声称自己是 Apache PID 4711,而 syslog 也就相信并保存到磁盘上。
    • 数据没有严格的格式。
    • Systemd Journal 用二进制格式保存所有日志信息,用户使用 journalctl 命令来查看日志信息。

    Systemd Journal 的优点如下:

    • 零维护:日志是除错和监控系统的核心功能,因此它自己不能再产生问题。举例说,自动管理磁盘空间,避免由于日志的不断产生而将磁盘空间耗尽。
    • 统一化:各种不同的日志存储技术应该统一起来,将所有的可记录事件保存在同一个数据存储中。所以日志内容的全局上下文都会被保存并且可供日后查询。例如一条固件记录后通常会跟随一条内核记录,最终还会有一条用户态记录。重要的是当保存到硬盘上时这三者之间的关系不会丢失。Syslog 将不同的信息保存到不同的文件中,分析的时候很难确定哪些条目是相关的。
    • 安全性:日志文件是可以验证的,让无法检测的修改不再可能。

    2. Systemd 和 sysvinit 命令的对照表

    Sysvinit 命令 Systemd 命令 备注
    service foo start systemctl start foo.service 启动服务
    service foo stop systemctl stop foo.service 停止服务
    service foo restart systemctl restart foo.service 重启服务
    service foo reload systemctl reload foo.service 当支持时,重新装载配置文件而不停止服务
    service foo condrestart systemctl condrestart foo.service 如果服务正在运行那么重启它
    service foo status systemctl status foo.service 查看服务状态
    ls /etc/rc.d/init.d/ systemctl list-unit-files –type=service 用来列出可以启动或停止的服务列表
    chkconfig foo on systemctl enable foo.service 在下次开机时或满足其他触发条件时启动服务
    chkconfig foo off systemctl disable foo.service 在下次开机时或满足其他触发条件时停止服务
    chkconfig foo systemctl is-enabled foo.service 用来检查一个服务在当前环境下被配置为启用还是禁用
    chkconfig –list systemctl list-unit-files –type=service 输出在各个运行级别下服务的启用和禁用情况
    chkconfig foo –list ls /etc/systemd/system/*.wants/foo.service 用来列出该服务在哪些运行级别下启用和禁用
    chkconfig foo –add systemctl daemon-reload 当创建新服务文件或者变更设置时使用
    telinit 3 systemctl isolate multi-user.target (OR systemctl isolate runlevel3.target OR telinit 3) 改变至多用户运行级别
  • 相关阅读:
    spring-boot 中application.properties的各种配置
    spring-boot 集合mybatis 的分页查询
    spring boot热部署pom.xml配置
    ssm框架整合
    mybatis逆向工程
    整合hibernate的lucene大数据模糊查询
    QBC查询、离线条件查询(DetachedCriteric)和分页查询模版
    虚拟机vmnet0、vmnet1和vmnet8的区别
    centOS7-配置网络地址
    在windows中使用Navicat连接Linux虚拟机中的mysql数据库
  • 原文地址:https://www.cnblogs.com/kika/p/10851633.html
Copyright © 2020-2023  润新知