1. 程式人生 > 其它 >跟我學 systemd

跟我學 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採用了以下新技術:

  1. 採用Socket啟用式與D-Bus啟用式服務,以提高相互依賴的各服務的並行執行效能;
  2. 用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 安裝到多使用者模式