1. systemd是什麼?
systemd是一種新的linux系統服務管理器。(d => daemon)
它替換了init系統,能夠管理系統啟動過程和一些系統服務,一旦啟動起來,就將監管整個系統。
傳統的init程序啟動方式的兩大弊端:
一是啟動時間長。(序列啟動)
二是啟動指令碼複雜。
systemd:
並行啟動服務,
按需啟動守護程序,
自動化服務依賴關係
2. systemd幹啥的?
啟動守護程序
在systemd管理體系中,被管理的deamon(守護程序)稱作unit(單元)
單元主要包括:
service, target, mount, sockets, path, timer
3. systemd的使用
systemctl是 systemd 的主命令,用於管理系統。
# 列出正在執行的 unit
$ systemctl list-units
# 顯示系統狀態
$ systemctl status
# 顯示單個 unit 的狀態
$ sysystemctl status bluetooth.service
# 立即啟動乙個服務
$ sudo systemctl start apache.service
# 立即停止乙個服務
$ sudo systemctl stop apache.service
# 重啟乙個服務
$ sudo systemctl restart apache.service
# 殺死乙個服務的所有子程序
$ sudo systemctl kill apache.service
$ sudo systemctl reload apache.service
systemd 預設從目錄/etc/systemd/system/讀取配置檔案。
但是,裡面存放的大部分檔案都是符號鏈結,指向目錄/usr/lib/systemd/system/,
真正的配置檔案存放在那個目錄。
systemctl enable命令用於在上面兩個目錄之間,建立符號鏈結關係。
單元配置檔案格式:
[unit]
description=atd daemon
[service]
type=forking
execstart=/usr/bin/atd
[install]
wantedby=multi-user.target
[unit]區塊通常是配置檔案的第乙個區塊,用來定義 unit 的元資料,以及配置與其他 unit 的關係。
description:簡短描述
requires:當前 unit 依賴的其他 unit,如果它們沒有執行,當前 unit 會啟動失敗
wants:與當前 unit 配合的其他 unit,如果它們沒有執行,當前 unit 不會啟動失敗
bindsto:與requires類似,它指定的 unit 如果退出,會導致當前 unit 停止執行
before:如果該欄位指定的 unit 也要啟動,那麼必須在當前 unit 之後啟動
after:如果該欄位指定的 unit 也要啟動,那麼必須在當前 unit 之前啟動
conflicts:這裡指定的 unit 不能與當前 unit 同時執行
[service]區塊用來 service 的配置,只有 service 型別的 unit 才有這個區塊。它的主要字段如下。
type:定義啟動時的程序行為。
type=******:預設值,執行execstart指定的命令,啟動主程序
type=forking:以 fork 方式從父程序建立子程序,建立後父程序會立即退出
type=oneshot:一次性程序,systemd 會等當前服務退出,再繼續往下執行
type=notify:當前服務啟動完畢,會通知systemd,再繼續往下執行
execstart:啟動當前服務的命令
execstartpre:啟動當前服務之前執行的命令
execstartpost:啟動當前服務之後執行的命令
execreload:重啟當前服務時執行的命令
execstop:停止當前服務時執行的命令
execstoppost:停止當其服務之後執行的命令
restartsec:自動重啟當前服務間隔的秒數
restart:定義何種情況 systemd 會自動重啟當前服務,可能的值包括always(總是重啟)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
timeoutsec:定義 systemd 停止當前服務之前等待的秒數
[install]區塊,定義如何安裝這個配置檔案,即怎樣做到開機啟動。
wantedby欄位:表示該服務所在的 target。(啟動某個target的時候,該target下面的所有服務會被啟動)
(預設的啟動 target 是multi-user.target, 在這個組裡的所有服務,都將開機啟動)
使用Systemd包裝SpringBoot應用
為應用建立乙個service檔案 unit description springboot rest service service user ubuntu 要執行程式的路徑 呼叫jar檔案的shell執行檔案 succes itstatus 143 timeoutstopsec 10 restart...
systemd服務內容詳解
systemd服務內容詳解 systemd是linux下的一種init軟體,由lennart poettering帶頭開發,並在lgpl 2.1及其後續版本許可證下開源發布。其開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並行啟動,同時達到降低shell的系統開銷...
centos7 系統管理systemd學習記錄
在centos7之前,系統服務是service,chkconfig等命令來管理的。到了centos7,統一使用systemctl來管理系統服務 其實就是把chkconfig和service結合在一起了,chkconfig主要用來控制開機自啟動,service則是用來管理服務的開啟關閉的 servic...