一、centos7也支持service命令啟動服務嗎
CentOS 7.0中一個最主要的改變,就是切換到了systemd。它用於替代紅帽企業版Linux前任版本中的SysV和Upstart,對系統和服務進行管理。systemd兼容SysV和Linux標准組的啟動腳本。Systemd是一個Linux操作系統下的系統和服務管理器。它被設計成向后兼容SysV啟動腳本(所謂的向后兼容就是對於之前的版本都是兼容的,但是對於之后的版本就不兼容了!),並提供了大量的特性,如開機時平行啟動系統服務,按需啟動守護進程,支持系統狀態快照,或者基於依賴的服務控制邏輯。
先前的使用SysV初始化或Upstart的紅帽企業版Linux版本中,使用位於/etc/rc.d/init.d/目錄中的bash初始化腳本進行管理。而在RHEL 7/CentOS 7中,這些啟動腳本被服務單元(服務單元的樣子:
以.service結尾)取代了。服務單元以.service文件擴展結束,提供了與初始化腳本同樣的用途。要查看、啟動、停止、重啟、啟用或者禁用系統服務,你要使用systemctl來代替舊的service命令。
注:為了向后兼容,舊的service命令在CentOS 7中仍然可用,它會重定向所有命令到新的systemctl工具。
下面是systemctl使用例子
使用systemctl來啟動/停止/重啟服務
要啟動一個服務,你需要使用如下命令:
# systemctl start httpd.service
這會啟動httpd服務,就我們而言,Apache HTTP服務器。
要停掉它,需要以root身份使用該命令:
# systemctl stop httpd.service
要重啟,你可以使用restart選項,如果服務在運行中,它將重啟服務;如果服務不在運行中,它將會啟動。你也可以使用try-start選項,它只會在服務已經在運行中的時候重啟服務。同時,reload選項你也可以有,它會重新加載配置文件。
# systemctl restart httpd.service
# systemctl try-restart httpd.service
# systemctl reload httpd.service
我們例子中的命令看起來會像下面這樣:
檢查服務狀態
要檢查服務狀態,你可以使用status選項,看這里:
# systemctl status httpd.service
輸出結果就像這樣:
它會告訴你運行中的服務的方方面面。
使用啟用/禁用服務來控制開機啟動
你也可以使用enable/disable選項來控制一個服務是否開機啟動,命令如下:
# systemctl enable httpd.service
# systemctl disable httpd.service
小結:1、先前的service命令在centos7 中仍然是可以使用的,因為舊的service命令(如:service network start命令)也是可以在centos7系統中執行的,系統會自動的重定向到新的命令
2、centos7的系統都是用service的 使用位於/etc/rc.d/init.d/目錄中的bash初始化腳本進行管理。而在RHEL 7/CentOS 7中,這些啟動腳本被服務單元(服務單元的樣子:
以.service結尾)取代了
參考鏈接:http://blog.sina.com.cn/s/blog_12b1464290102yc9f.html
二、centos7 中的systemctl和舊的service命令的區別和聯系
1、service命令的執行的原理:通過執行腳本的形式去管理、開啟、關閉和重啟服務
發現linux啟動服務是用SERVICE + COMMAND+參數,覺得很有意思,因為command命令本身也是一個腳本啊,比如說:service network restart;好奇心就來了,怎么能夠做一個屬於自己的service命令呢。
其實很簡單,只要我們認識service這個命令的原理就行了。如果要知道service這個命令怎么用,你就自己man service下,在這里,我簡要說下service的運行過程。舉個例子來說:service network restart。
首先呢,sevice 會去尋找/etc/init.d下的network腳本,restart是network腳本里的一個參數(你可以去查看network這個腳本支持的參數),然后告訴系統運行network這個腳本,剩下的事情就交給network腳本去坐了,事實就是這么簡單。
現在,你應該知道怎么編寫屬於自己的service命令了吧,編寫一個腳本,然后把它放在/etc/init.d這個目錄底下,你就可以用service +腳本名字 運行它。如果是要開機自動啟動那就得用chkconfig命令了。
注意:
A、service這個命令往往是即時生效,不用開關機,但是重啟后服務會回到默認狀態。
B、chkconfig是用於把服務加到開機自動啟動列表里,只要啟動它,就能自動啟動,重啟后永久生效
即:chkconfig --add COMMAND
chkconfig COMMAND on/off 重啟后永久生效
2、systemctl命令的原理:
linux中systemctl詳細理解:
一、systemctl理解
Linux 服務管理兩種方式service和systemctl
systemd是Linux系統最新的初始化系統(init),作用是提高系統的啟動速度,盡可能啟動較少的進程,盡可能更多進程並發啟動。想要更深的理解systemd ,可以見鏈接:https://www.cnblogs.com/isme-zjh/p/11685327.html
systemd對應的進程管理命令是systemctl
1. systemctl命令兼容了service
即systemctl也會去/etc/init.d目錄下,查看,執行相關程序,
因為systemctl實際上是
在RHEL 7/CentOS 7中,這些啟動腳本被服務單元(服務單元的樣子:
以.service結尾)取代了。服務單元以.service文件擴展結束,提供了與初始化腳本同樣的用途(啟動服務、關閉服務等,)常見的.service
具體更深的對於 systemctl 命令管理的具體的資源的類型和具體的應用的命令可以見鏈接:https://www.cnblogs.com/isme-zjh/p/11685233.html