淺談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 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
[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怎麼形成,下文繼續分解。
「其他文章」
- MySQL優化篇(一),我可以和麵試官多聊幾句嗎?——SQL優化流程與優化資料庫物件
- 最新大廠資料湖面試題,知識點總結
- 元宇宙探索之路
- Netty之非阻塞處理
- 前端-檔案上傳核心思想
- SringBoot之yaml語法
- func-spring-boot-starter 匿名函式託管
- Clickhouse 使用者自定義外部函式
- 全方位講解 Nebula Graph 索引原理和使用
- 設計一個簡單的devops系統
- Docker最常用的映象命令和容器命令
- Kube-OVN:大型銀行技術團隊推薦的金融級雲原生網路方案
- 速看,ElasticSearch如何處理空值
- 戲說領域驅動設計(十九)——外驗
- CountDownLatch和CyclicBarrier:如何讓多執行緒步調一致?
- 彈簧系統三維視覺化
- Rabbit MQ 怎麼保證可靠性、冪等性、消費順序?
- Linux下使用壓力測試工具stress
- 比Tensorflow還強?
- espnet中的transformer和LSTM語言模型對比實驗