• 系统管理-系统启动


    upstart的启动方式

    upstart的特点

    upstart解决了之前提到的sysvinit的缺点,采用时间驱动模型,upstart可以:

    更快地启动系统
    当新硬件被发现时动态启动服务
    硬件被拔除时动态停止服务
    这些特点使得upstart可以很好地应用在桌面或者便携式系统中,处理这些系统中的动态硬件插拔特性

    upstart启动过程:

    系统通电后运行GRUB载入内核。内核执行硬件初始化和内核自身初始化。在内核初始化最后,内核将启动pid为1的init进程,即upstart进程。

    upstart进程在执行了一些自身的初始化工作后,立即发出“starup”事件。上图中的红色箭头表示事件,可以在左上方看到“startup事件”。

    所有依赖于“startup”事件的工作被触发,其中最重要的是mountall,mountall任务负责挂载系统中需要使用的文件系统。完成相应的工作后,mount任务会发出以下

    事件:local-filesystem,virtual-filesystem,all-swaps

     此时,任务rc-sysinit会被触发,因为rc-sysinit的start on 条件如下:

    start on filesystem and net-device-up IFACE=io

    任务rc-sysinit调用telinit,telinit、任务会发出runlevel事件,触发执行/etc/init/rc.conf。rc.conf执行/etc/rc$.d/目录下的所有脚本,和sysvinit非常相似。

    了解systemd启动方式

    systemd简介

    系统启动和服务器进程是由systemd系统和服务管理器进行管理。此程序提供了一种方式,可以在启动时和运行中的系统上激活系统资源,服务器守护进程和其它进程
    守护进程是在执行各种任务的后台等待或者运行的进程,为了监听链接,收回进程时候socket,socket可以由守护进程创建,或与守护进程分离,并且可能由另一个进程创建,随后在客户端建立连接时通过socket传递到守护进程
    服务通常指定的是一个或者多个守护进程,单启动或停止一个服务可能会对系统的状态进行一次更改,不会留下守护进程之后继续运行。

    在centos7中,pid属于systed这一个新的init系统,systemd提供了几项新的功能:

    并行化功能,它可提高系统的启动速度
    按需启动守护进程,而不需要单独的服务
    自动管理服务依赖关系,可以方式长时间超时,
    利用Linux cgroup一起跟踪相关进程的方式
    在系统启动过程中要设计多个不同的组件,按下开机按钮后,首先BIOS/UEFI做最基本的硬件自检与初始化,
    然后加载预设/手动选择的磁盘/网络上的引导加载器,引导加载器进一步从磁盘/网络上加载操作系统内核
    对于Linux来说,内核将会解压一个initrd镜像
    并执行由指定的init程序,以寻找并挂载根文件系统
    完成根文件系统的挂载之后,内核启动指定的init程序以及管理系统的控制权
    该init程序将会负责检测所有其他的硬件设备,挂载必要的文件系统,启动必要的服务等等
    关机时,init程序将会停止所有服务,卸载所有的问价系统,返回initrd环境,卸载根文件系统,关闭电源

    注意:

    有了systemd,基于shell的服务脚本仅用于几个传统服务,因此,带有shell变量的配置文件将被取代,如/etc/sysconfig中可以找到配置文件,仍在使用中的配置文件作为systemd环境文件被导入,并作为NAME=VALUE对进行读取他们不再以shell脚本的形式提供
    systemctl和systemd unit
    systectl命令用于管理各种类型的systemd对象,他们成为单元,可以通过systemctl -t help命令显示可用unit类型的类表。

    以下是一些常用的unit类型

    .service unit扩展名为.service,表示系统服务。这总unit用于启动经常访问的守护进程,如Web服务器
    .socket unit 扩展名为.socket ,表示IPC(进程间通信)socket。
    .path unit扩展名为.path, 用于将服务器的激活推迟到特定文件发生更改之后

    服务状态

    可以通过systemctl status name.type查看服务的状态,如果为提供unit类型,则systemctl将显示服务unit的状态(如果存在)

    [root@localhost ~]# systemctl status sshd.service 
    ● sshd.service - OpenSSH server daemon
       Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
       Active: active (running) since 三 2018-08-29 11:19:31 CST; 22h ago
         Docs: man:sshd(8)
               man:sshd_config(5)
     Main PID: 1054 (sshd)
       CGroup: /system.slice/sshd.service
               └─1054 /usr/sbin/sshd -D
    
    8月 29 11:19:31 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
    8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on 0.0.0.0 port 22.
    8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on :: port 22.
    8月 29 11:19:31 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
    8月 29 11:21:11 localhost.localdomain sshd[3054]: Accepted password for root from 10....2
    8月 30 08:49:36 localhost.localdomain sshd[8762]: Accepted password for root from 10....2
    Hint: Some lines were ellipsized, use -l to show in full.
    [root@localhost ~]# 
    关键字:描述
    loaded unit配置文件已处理
    active(running) 一个或者多个进程正在持续运行
    active(exited)一成功完成一次配置
    active(waiting)运行中,但是正在等待event
    inactive 没有运行
    enabled 将在系统启动时启动
    disabled 不会在系统启动时启动
    static 无法启动,但可以由某一启动的unit自启启动

    更多详情请百度。。概念性的东西不想写。。

  • 相关阅读:
    实际项目管理-1
    arcengine 错误
    一些视频技术类网站
    winform 组件之dotnetbar10.5.3
    winform 弹框的组件
    一个好的开源网站
    写webservice 注意点
    ww
    js
    瀑布流
  • 原文地址:https://www.cnblogs.com/52-qq/p/9558240.html
Copyright © 2020-2023  润新知