版權 © 2015 http://netkiller.github.io
版權聲明
轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。
|
|
|
微信掃瞄二維碼進入 Netkiller 微信訂閲號 QQ群:128659835 請註明“讀者” |
2017-06-16
systemd是Linux電腦操作系統之下的一套中央化系統及設置管理程序(init軟件),包括有守護進程、程式庫跟應用軟件,由Lennart Poettering帶頭開發。 其開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果,最終代替現在常用的System V與BSD風格init程序。
與多數發行版使用的System V風格init相比,systemd採用了以下新技術:
採用Socket激活式與D-Bus激活式服務,以提高相互依賴的各服務的並行運行性能;
用cgroups代替進程ID來追蹤進程,以此即使是兩次fork之後生成的守護進程也不會脫離systemd的控制。
CentOS 7 開始系統預設使用 systemd,對於用戶來說就是service被systemctl替代了。
基本上從 Redhat 派生出的Linux操作系統基本都切換到了 systemd,Ubuntu也採用了systemd
由Lennart Poettering帶頭開發
下面是一個啟動tomcat的systemd腳本,以此腳本為例我帶大家進入 systemd 的世界。
#################################################### # Homepage: http://netkiller.github.io # Author: netkiller<netkiller@msn.com> # 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
Description 寫一段文字描述該腳本
After 等待網絡就緒後運行
Type 啟動類型
User, Group 運行 ExecStart 腳本的用戶,相當於 su - user -c ExecStart
Environment 環境變數,EnvironmentFile 環境變數檔案
ExecStartPre 開始之前運行的腳本,ExecStart 啟動腳本, ExecStartPost 啟動之後運行的腳本
ExecStop 停止腳本
WantedBy=multi-user.target 安裝到多用戶模式