Systemd 簡介:https:///wiki/Systemd/zh-cn
一,、service unit 常用命令,以 mysql 服務(wù)為例# 開機啟動 systemctl enable mysqld # 關(guān)閉開機啟動 systemctl disable mysqld # 啟動服務(wù) systemctl start mysqld # 停止服務(wù) systemctl stop mysqld # 重啟服務(wù) systemctl restart mysqld # 查看服務(wù)狀態(tài) systemctl status mysqld systemctl is-active sshd.service # 結(jié)束服務(wù)進程(服務(wù)無法停止時) systemctl kill mysqld
二,、服務(wù)啟動的配置文件配置文件主要放在 /usr/lib/systemd/system 目錄,,也可能在 /etc/systemd/system 目錄 # 查看 sshd 服務(wù)啟動文件 systemctl cat sshd.service # /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] Type=notify EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target 每個服務(wù)文件以 .service 結(jié)尾,一般會分為 3 部分,,必須包含 [Service] 部分 [Unit] 啟動順序與依賴關(guān)系Description:當(dāng)前服務(wù)的簡單描述 Documentation:指定 man 文檔位置 After:如果 network.target 或 sshd-keygen.service 需要啟動,,那么 sshd.service 應(yīng)該在它們之后啟動 Before:定義 sshd 應(yīng)該在哪些服務(wù)之前啟動 注意:After 和 Before 字段只涉及啟動順序,不涉及依賴關(guān)系,。 Wants:表示 sshd.service 與 sshd-keygen.service 之間存在"弱依賴"關(guān)系,,即如果"sshd-keygen.service"啟動失敗或停止運行,不影響 sshd.service 繼續(xù)執(zhí)行 Requires:表示"強依賴"關(guān)系,,即如果該服務(wù)啟動失敗或異常退出,那么sshd.service 也必須退出 注意:Wants 字段與 Requires 字段只涉及依賴關(guān)系,,與啟動順序無關(guān),,默認情況下是同時啟動。 [Service] 啟動行為EnvironmentFile:許多軟件都有自己的環(huán)境參數(shù)文件,,該字段指定文件路徑 注意:/etc/profile 或者 /etc/profile.d/ 這些文件中配置的環(huán)境變量僅對通過 pam 登錄的用戶生效,,而 systemd 是不讀這些配置的。 systemd 是所有進程的父進程或祖先進程,,它的環(huán)境變量會被所有的子進程所繼承,,如果需要給 systemd 配置默認參數(shù)可以在 /etc/systemd/system.conf 和 /etc/systemd/user.conf 中設(shè)置。
配置中多個相同配置會選擇最后一個,下面結(jié)果是 execstart2 [Service] ExecStart=/bin/echo execstart1 ExecStart=/bin/echo execstart2
所有的啟動設(shè)置之前,,都可以加上一個連詞號(-),,表示"抑制錯誤",即發(fā)生錯誤的時候,,不影響其他命令的執(zhí)行 EnvironmentFile=-/etc/sysconfig/sshd,,表示即使 /etc/sysconfig/sshd 文件不存在,也不會拋出錯誤 [Install]WantedBy:表示該服務(wù)所在的 Target(服務(wù)組) 關(guān)于 Target,,運行級別 # 查看默認 Target systemctl get-default # 結(jié)果為 multi-user.target,,表示默認的啟動 Target 是multi-user.target。在這個組里的所有服務(wù),,都將開機啟動,。這就是為什么 systemctl enable 命令能設(shè)置開機啟動的原因
三,、自定義服務(wù)在 /usr/lib/systemd/system 下新建服務(wù)腳本 vim /usr/lib/systemd/system/zdy.service [Unit] Description=描述 Environment=環(huán)境變量或參數(shù)(系統(tǒng)環(huán)境變量此時無法使用) After=network.target [Service] Type=forking EnvironmentFile=所需環(huán)境變量文件或參數(shù)文件 ExecStart=啟動命令(需指定全路徑) ExecStop=停止命令(需指定全路徑) User=以什么用戶執(zhí)行命令 [Install] WantedBy=multi-user.target 新建完成后設(shè)置自啟動 # 添加或修改配置文件后,需要重新加載 systemctl daemon-reload # 設(shè)置自啟動,,實質(zhì)就是在 /etc/systemd/system/multi-user.target.wants/ 添加服務(wù)文件的鏈接 systemctl enable zdy
官方手冊 https://www./software/systemd/man/systemd.service.html 中文翻譯 http://www./systemd/systemd.service.html http://www./blog/2016/03/systemd-tutorial-part-two.html https://blog.csdn.net/weixin_37766296/article/details/80192633 |
|