CentOS 7.x 以前的版本,系統啓動時,第一支呼叫的程序是 init ,而後 init 去喚起全部的系統所須要的服務,不管是本地服務仍是網絡服務。全部的服務啓動腳本都放置於 /etc/init.d 下面,基本上都是使用 bash shell script 所寫成的腳本程序。html
從CentOS 7.x 之後,Red Hat 放棄了 init 啓動腳本的方法,改用systemd 這個啓動服務管理機制。mysql
平行處理全部服務,加速開機流程sql
舊的init 啓動腳本是【一項一項任務依序啓動】的模式,所以不相依的服務也是一個一個的等待。但目前咱們的硬件主機系統與操做系統幾乎都支持多核心結構了,systemd可讓全部的服務同時啓動,系統啓動的速度變快了。一經要求就相應的 on-demand 啓動方式shell
System 所有就是僅有一直systemd 服務 搭配systemctl 指令來處理,無需其它的指令來支持。不想以前的啓動方式還要init,chkconfig,service…等指令。此外,systemd 因爲常駐內存,所以任何要求(on-demand)均可以當即處理後續的daemon啓動的任務。服務相依性的自我檢查bash
因爲systemd能夠自定義服務相依性的檢查,所以若是 B 服務是架構在 A服務上面的,那當你在沒有啓動 A 服務的狀況下僅手動啓動 B 服務時,systemd 會自動幫你啓動A服務。這樣能夠免去管理員一項一項去分析的麻煩。網絡
目錄 | 說明 |
/lib/system/system/ | 使用CentOS官方提供的軟件安裝後,默認的啓動腳本配置文件都放在這裏,這裏的數據儘可能不要修改。要修改時,請到 /etc/system/system低下修改較佳。架構 |
/etc/system/system/ | 管理員依據主機系統的需求所創建的執行腳本,其實這個目錄有點像以前的/etc/rc.d/rc5.d/Sxx 之類的功能。執行優先順序要比/run/system/system/ 高。 |
/run/system/system/學習 |
系統執行過程當中所產生的服務腳本。 |
在以前的安裝中,咱們通常都是 經過 support-files/mysql.server (單實例)、support-files/mysqld_multi.server (多實例)來配置服務。測試
例如 :http://www.javashuo.com/article/p-cnqcheku-ba.html操作系統
再如:http://www.javashuo.com/article/p-qwetcrri-k.html
其實現管理mysql服務的腳本就是 在mysql.server、 mysqld_multi.server文件中。
腳本複雜而且修改比較困難。例如,我須要配置多實例,但不想修改既有的my.cnf 配置文件,若是新實例的文件名字命名爲my3307.cnf,此時再用老的方法,去修改 mysql.server 就比較麻煩。
而若是用 system就比較簡單。
例如 ,定義一個測試服務爲:mysql3307.service
[Unit] Description=MySQL Server After=network.target [Install] WantedBy=multi-user.target [Service] Type=forking TimeoutSec=0 PermissionsStartOnly=true ExecStart=/data/mysql57/bin/mysqld --defaults-file=/etc/my3307.cnf --daemonize LimitNOFILE = 65535 Restart=on-failure RestartSec=3 RestartPreventExitStatus=1 PrivateTmp=false
此服務的其它的一些操做命令;
systemctl enable mysql3307.service ---設置開啓自啓動
systemctl start mysql3307.service ----開啓此服務
systemctl stop mysql3307.service -----關閉此服務
systemctl status mysql3307.service -----查看服務狀態
注意 ; (1)/data/mysql57/bin/mysqld 路徑爲 可執行文檔所在路徑;/etc/my3307.cnf 配置未見;
(2)Restart=on-failure 是決定 服務Failure 時,是否自動拉起;RestartSec=3 嘗試拉起間隔。
---------部分知識參考《鳥哥的Linux私房菜-基礎學習篇(第四版)》,謝謝!