Systemd 操作
Ubuntu 16.04 淘汰使用 rc.local,改用 systemd 達成開機啟動服務
基本範例
$ nano /etc/systemd/system/my.service
[Unit]
[Service]
ExecStart=/path/script.sh
[Install]
WantedBy=default.target
$ chmod +x /path/script.sh
$ systemctl daemon-reload
$ systemctl start my.service
$ systemctl enable my.service
如有問題,用 status 查詢後,重新 daemon-reload
$ systemctl status my.service
$ systemctl daemon-reload
重開機,檢查服務是否有啟動成功
.Service Unit 詳解
結構- [Unit] 敘述、服務執行相依性
- [Service]..:實際執行內容 (不同的 Type 會有不同的項目)
- [Install]:soft link 到哪個 target
[Unit]
Description= 服務說明,list-units 時可看到
Documentation= 服務說明檔
After= 在什麼服務後才啟動,非強制
Before= 在什麼服務前就啟動,非強制
Requires= 將 After、Before 變成強制
Wants= 希望清單,希望後面繼續執行甚麼服務
Conflicts= 衝突清單,此服務後面不可以執行甚麼服務
[Service]
Type= daemon 啟動的方式
=simple 啟動後常駐於記憶體中(default)
=forking 子程序的方式 (simple 方式,父程序在啟動結束後就會終止運作)
=oneshot 類似 simple,但完成後不常駐
=dbus 類似 simple,須取 D-Bus 的名稱後,才會繼續運作 (必要參數 BusName)
=notify 類似 simple,透過 inotify 發送啟動服務的通知
=idle 類似 simple,所有的工作都順利執行完畢後才會執行。(通常是給開機完成後才執行的服務)
Environment= 環境參數
EnvironmentFile= 環境檔
ExecStartPre= 在 start 之前執行的指令
ExecStart= 腳本程式、指令
ExecStartPost= 在 start 之後執行的指令
ExecStop= 執行 systemctl stop 的執行的指令
ExecReload= 執行 systemctl reload 的執行的指令
Restart= 如果為 always,會不斷重生
RestartSec= 重生所需耗費時間(秒)
RemainAfterExit= 如果為 1,所屬的所有程序都終止之後,此服務會再嘗試啟動。(for Type=oneshot)
TimeoutSec= 幾秒後,強制結束
PrivateTmp= 如果為 true,會分配獨立的臨時空間給服務
KillMode= daemon 終止時,
=process 只終止主要的程序(ExecStart那串)
=control-group 主程序產生的其他 control-group 的程序一起關閉
=none 則沒有程序會被關閉
User= 指定執行的身份(預設root)
Group= 指定執行的群組(預設root)
UMask=0027
PermissionsStartOnly= 允許使用 User,yes 表示只對 ExecStart 有效,no 表示全部 Exec* 都不可用
[Install]
WantedBy=default.target
WantedBy= 要掛在哪一個 target unit 底下
Also= 服務 enable 時,要連帶 enable 的其他服務
Alias= 別名,呼叫此名稱等同呼叫這個服務
相關指令
查詢執行 log$ journalctl -u xxxx.service
列出全部target
$ systemctl list-units --type=target --all
列出清單(link)
$ systemctl list-unit-files --all
列出相依
$ systemctl list-dependencies parse.service
查詢 default.target
$ systemctl get-default
設定 default.target
$ systemctl set-default multi-user.target
target unit
graphical.target:文字+圖形界面,已包含 multi-user.target multi-user.target:純文字模式 shutdown.target:關機的流程 ... 最常用到 multi-user.target、graphical.target,全部的 target 可看到上面指令查詢參考文獻
Systemd 操作
Reviewed by Wild
on
1/04/2018 03:40:00 下午
Rating:
沒有留言:
沒有Google帳號也可發表意見唷!