• 浅谈systemd原理和应用


    多不说,直接上代码(可谓配置):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [Unit]
    Description=demo app
    After=network-is-online.target
     
    [Service]
    Type=Simple
    ExecStart=/usr/bin/demo
     
    [Install]
    WantedBy=multi-user.target

     :表达的意思是在network已经online情况下则启动该服务,如果上述文件为/lib/systemd/system/下的demo_app.service,则启动。

    tips:

    1
    2
    3
    cd /lib/systemd/system
    systemctl is-enabled demo_app.service
    systemctl enable demo_app.service

     

    1. systemd崛起

    聊聊linux系统的应用启动服务的机制:

    sysinit -> upstart -> systemd

    systemd 主要是针对sysinit“发热而生”,所谓热则是/etc/init.d/xxx.sh,运行一连串的shell,以串行的机制无休止running脚本,弊端颇多。

     

    2. systemd基本过程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    核心是通过套接字进行激活通讯的,简单点则是套接字trigger一切/下一个服务,不存在依赖关系。
    套接字用socket,表示为------>:
     
    A.  ------>B ------> D 
      \
       \
        ------>C ------> E
    T1         T2       T3
     
    Ts = T3 - T1
    对比串行则
    A - > B T2-T1
    A - > C T2-T1
    B - > D T3-T2
    C - > E T3-T2
     
    Ti = 2(T3-T1) = 2 Ts

     3. 应用更加广泛,请看下eg

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [Unit]
    Description=demo app
    After=network-on-line.target
    Before=mysql-running.target
     
     
    [Service]
    Type=Simple
    ExecStart=/usr/bin/demo
     
    [Install]
    WantedBy=multi-user.target

     在network启动后启动demo,在mysql启动前启动demo,保证demo需要用到网络,但是不需要等mysql(启动完3s)才开始该服务。(纯属假定场景)

    至于.target怎么形成,下文继续分解。

  • 相关阅读:
    音视频领域的未来发展方向展望
    打印机语言监视器
    Spring整合其他技术
    图形验证码
    Java中常用的锁总结与理解
    Windows本地搭建rtmp推流服务
    Python21天学习挑战赛Day(9)·操作MongoDB数据库
    Docker之nacos集群部署(详细教你搭建)
    合并文件系统中的满足条件的文件的行
    Elasticsearch实战(十八)--ES搜索Doc Values/Fielddata 正排索引 深入解析
  • 原文地址:https://www.cnblogs.com/real-watson/p/16062120.html