浅谈systemd原理和应用
多不说,直接上代码(可谓配置):
[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:
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基本过程
核心是通过套接字进行激活通讯的,简单点则是套接字trigger一切/下一个服务,不存在依赖关系。 套接字用socket,表示为------>:A.------>B ------> D \ \ ------>C ------> E T1T2T3Ts = T3 - T1 对比串行则 A - > B T2-T1 A - > C T2-T1 B - > D T3-T2 C - > E T3-T2Ti = 2(T3-T1) = 2 Ts
3. 应用更加广泛,请看下eg
[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)才开始该服务。(纯属假定场景)
【浅谈systemd原理和应用】至于.target怎么形成,下文继续分解。
推荐阅读
- FreeRTOS|FreeRTOS记录(三、RTOS任务调度原理解析_Systick、PendSV、SVC)
- 图片懒加载的原理和实现
- jQuery|滚动加载图片(懒加载)实现原理
- 哈希表的原理
- 面试官(用过|面试官:用过 ZooKeeper 吗( 基本原理你明白吗?))
- 【原创】浅谈指针(十一)alloca函数
- 字符串|深入正则表达式(3):正则表达式工作引擎流程分析与原理释义
- systemd|systemd --user进程CPU占用高问题分析
- 浅析MySQL恶意服务器读取文件原理
- 分布式|浅谈分布式锁