跟我學 systemd
跟我學 systemd
摘要
我的系列文件
Netkiller Architect 手札 |
Netkiller Developer 手札 |
Netkiller PHP 手札 |
Netkiller Python 手札 |
Netkiller Testing 手札 |
---|---|---|---|---|
Netkiller Cryptography 手札 |
Netkiller Linux 手札 |
Netkiller Debian 手札 |
Netkiller CentOS 手札 |
Netkiller FreeBSD 手札 |
Netkiller Shell 手札 |
Netkiller Security 手札 |
Netkiller Web 手札 |
Netkiller Monitoring 手札 |
Netkiller Storage 手札 |
Netkiller Mail 手札 |
Netkiller Docbook 手札 |
Netkiller Project 手札 |
Netkiller Database 手札 |
Netkiller PostgreSQL 手札 |
Netkiller MySQL 手札 |
Netkiller NoSQL 手札 |
Netkiller LDAP 手札 |
Netkiller Network 手札 |
Netkiller Cisco IOS 手札 |
Netkiller H3C 手札 |
Netkiller Multimedia 手札 |
Netkiller Perl 手札 |
Netkiller Amateur Radio 手札 |
Netkiller DevOps 手札 |
您可以使用iBook閱讀當前文件
目錄
- 1. 什麼是 systemd
- 2. why-為什麼做
- 3. systemd 是何時被採用的
- 4. 那些系統使用 systemd
- 5. system 是誰開發的
- 6. 怎樣編寫systemd指令碼
- 6.1. Unit
- 6.2. Service
- 6.3. Install
1. 什麼是 systemd
systemd是Linux電腦作業系統之下的一套中央化系統及設定管理程式(init軟體),包括有守護程序、程式庫跟應用軟體,由Lennart Poettering帶頭開發。 其開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果,最終代替現在常用的System V與BSD風格init程式。
2. why-為什麼做
與多數發行版使用的System V風格init相比,systemd採用了以下新技術:
- 採用Socket啟用式與D-Bus啟用式服務,以提高相互依賴的各服務的並行執行效能;
- 用cgroups代替程序ID來追蹤程序,以此即使是兩次fork之後生成的守護程序也不會脫離systemd的控制。
3. systemd 是何時被採用的
CentOS 7 開始系統預設使用 systemd,對於使用者來說就是service被systemctl替代了。
4. 那些系統使用 systemd
基本上從 Redhat 派生出的Linux作業系統基本都切換到了 systemd,Ubuntu也採用了systemd
5. system 是誰開發的
由Lennart Poettering帶頭開發
6. 怎樣編寫systemd指令碼
下面是一個啟動tomcat的systemd指令碼,以此指令碼為例我帶大家進入 systemd 的世界。
例 1. /usr/lib/systemd/system/tomcat.service
####################################################
# Homepage: http://netkiller.github.io
# Author: netkiller<[email protected]>
# Script: https://github.com/oscm/shell
# Date: 2015-11-03
####################################################
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
After=syslog.target
[Service]
Type=forking
User=www
Group=www
#EnvironmentFile=/etc/sysconfig/tomcat
ExecStartPre="rm -rf /srv/apache-tomcat/logs/*"
ExecStart=/srv/apache-tomcat/bin/startup.sh
#ExecStartPost=
ExecStop=/srv/apache-tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
指令碼安裝到 /usr/lib/systemd/system/tomcat.service 下面
systemctl enable tomcat
systemctl start tomcat
systemctl stop tomcat
systemctl disable tomcat
啟用指令碼的時候會建立一個符號連結
[neo@netkiller ~]# ll /etc/systemd/system/multi-user.target.wants/tomcat.service
lrwxrwxrwx 1 root root 38 Nov 3 04:06 /etc/systemd/system/multi-user.target.wants/tomcat.service -> /usr/lib/systemd/system/tomcat.service
6.1. Unit
Description 寫一段文字描述該指令碼
After 等待網路就緒後執行
6.2. Service
Type 啟動型別
User, Group 執行 ExecStart 指令碼的使用者,相當於 su - user -c ExecStart
Environment 環境變數,EnvironmentFile 環境變數檔案
ExecStartPre 開始之前執行的指令碼,ExecStart 啟動指令碼, ExecStartPost 啟動之後執行的指令碼
ExecStop 停止指令碼
6.3. Install
WantedBy=multi-user.target 安裝到多使用者模式