新聞中心
這篇文章將為大家詳細講解有關(guān)systemctl命令的介紹和使用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、systemctl介紹
通常,Linux 的啟動一直采用init進程。
我們經(jīng)??吹?/p>
$ sudo /etc/init.d/apache2 start
或者
$ service apache2 start
這種方法有兩個缺點:
一是啟動時間長。init進程是串行啟動,只有前一個進程啟動完,才會啟動下一個進程。
二是啟動腳本復(fù)雜。init進程只是執(zhí)行啟動腳本,不管其他事情。腳本需要自己處理各種情況,這往往使得腳本變得很長。
為此,LINXU設(shè)計引入了Systemd
它的設(shè)計目標是,為系統(tǒng)的啟動和管理提供一套完整的解決方案。根據(jù) Linux 慣例,字母d是守護進程(daemon)的縮寫。Systemd 這個名字的含義,就是它要守護整個系統(tǒng)。使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成為系統(tǒng)的第一個進程(PID 等于 1),其他進程都是它的子進程。
通過上圖的命令,我們可以查看Systemd版本。
總的來說,Systemd 的優(yōu)點是功能強大,使用方便,缺點是體系龐大,非常復(fù)雜。事實上,現(xiàn)在還有很多人反對使用 Systemd,理由就是它過于復(fù)雜,與操作系統(tǒng)的其他部分強耦合,違反”keep simple, keep stupid”的Unix 哲學。
上圖就是Systemd的架構(gòu)圖,看著有點嚇人!
二、systemctl命令
Systemd 并不是一個命令,而是一組命令,涉及到系統(tǒng)管理的方方面面。
下面我來介紹幾個常用的命令
# 啟動redis服務(wù)
$ sudo systemctl start redis
# 重啟redis服務(wù)
$ sudo systemctl restart redis
# 查看redis服務(wù)狀態(tài)
$ sudo systemctl status redis
# 重啟系統(tǒng)
$ sudo systemctl reboot
# 關(guān)閉系統(tǒng),切斷電源
$ sudo systemctl poweroff
三、利用systemctl添加自定義服務(wù)
在日常開發(fā)中,我們難免搭建各種各樣的服務(wù),這時,我們可以利用systemctl添加我們需要的服務(wù)。
以我的系統(tǒng)為例,配置服務(wù)可以到上圖的目錄中,system存放了系統(tǒng)配置的服務(wù),user目錄存放用戶自定義配置的服務(wù),當然,你也可以把服務(wù)放到system中
上圖是已經(jīng)搭好的ECF服務(wù),分別有Unit、Service、Install三個關(guān)鍵詞
[Unit]
Description : 服務(wù)的簡單描述
Documentation :服務(wù)文檔
Before、After:定義啟動順序。Before=xxx.service,代表本服務(wù)在xxx.service啟動之前啟動。After=xxx.service,代表本服務(wù)在xxx.service之后啟動。
Requires:這個單元啟動了,它需要的單元也會被啟動;它需要的單元被停止了,這個單元也停止了。
Wants:推薦使用。這個單元啟動了,它需要的單元也會被啟動;它需要的單元被停止了,對本單元沒有影響。
[Service]
Type=simple(默認值):systemd認為該服務(wù)將立即啟動。服務(wù)進程不會fork。如果該服務(wù)要啟動其他服務(wù),不要使用此類型啟動,除非該服務(wù)是socket激活型。
Type=forking:systemd認為當該服務(wù)進程fork,且父進程退出后服務(wù)啟動成功。對于常規(guī)的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應(yīng)同時指定 PIDFile=,以便systemd能夠跟蹤服務(wù)的主進程。
Type=oneshot:這一選項適用于只執(zhí)行一項任務(wù)、隨后立即退出的服務(wù)??赡苄枰瑫r設(shè)置 RemainAfterExit=yes 使得 systemd 在服務(wù)進程退出之后仍然認為服務(wù)處于激活狀態(tài)。
Type=notify:與 Type=simple 相同,但約定服務(wù)會在就緒后向 systemd 發(fā)送一個信號。這一通知的實現(xiàn)由 libsystemd-daemon.so 提供。
Type=dbus:若以此方式啟動,當指定的 BusName 出現(xiàn)在DBus系統(tǒng)總線上時,systemd認為服務(wù)就緒。
Type=idle: systemd會等待所有任務(wù)(Jobs)處理完成后,才開始執(zhí)行idle類型的單元。除此之外,其他行為和Type=simple 類似。
PIDFile:pid文件路徑
ExecStart:指定啟動單元的命令或者腳本,ExecStartPre和ExecStartPost節(jié)指定在ExecStart之前或者之后用戶自定義執(zhí)行的腳本。Type=oneshot允許指定多個希望順序執(zhí)行的用戶自定義命令。
ExecReload:指定單元停止時執(zhí)行的命令或者腳本。
ExecStop:指定單元停止時執(zhí)行的命令或者腳本。
PrivateTmp:True表示給服務(wù)分配獨立的臨時空間
Restart:這個選項如果被允許,服務(wù)重啟的時候進程會退出,會通過systemctl命令執(zhí)行清除并重啟的操作。
RemainAfterExit:如果設(shè)置這個選擇為真,服務(wù)會被認為是在激活狀態(tài),即使所以的進程已經(jīng)退出,默認的值為假,這個選項只有在Type=oneshot時需要被配置。
[Install]
Alias:為單元提供一個空間分離的附加名字。
RequiredBy:單元被允許運行需要的一系列依賴單元,RequiredBy列表從Require獲得依賴信息。
WantBy:單元被允許運行需要的弱依賴性單元,Wantby從Want列表獲得依賴信息。
Also:指出和單元一起安裝或者被協(xié)助的單元。
DefaultInstance:實例單元的限制,這個選項指定如果單元被允許運行默認的實例。
關(guān)于systemctl命令的介紹和使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標題:systemctl命令的介紹和使用-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.dlmjj.cn/article/dhdjci.html