久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux中如何使用systemctl命令

147次閱讀
沒有評論

共計 2531 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章將為大家詳細講解有關 linux 中如何使用 systemctl 命令,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、systemctl 介紹
  通常,Linux 的啟動一直采用 init 進程。

  我們經常看到

      $ sudo /etc/init.d/apache2 start

      或者

      $ service apache2 start

  這種方法有兩個缺點:

  一是啟動時間長。init 進程是串行啟動,只有前一個進程啟動完,才會啟動下一個進程。

  二是啟動腳本復雜。init 進程只是執行啟動腳本,不管其他事情。腳本需要自己處理各種情況,這往往使得腳本變得很長。

  為此,LINXU 設計引入了 Systemd

  它的設計目標是,為系統的啟動和管理提供一套完整的解決方案。根據 Linux 慣例,字母 d 是守護進程(daemon)的縮寫。Systemd 這個名字的含義,就是它要守護整個系統。使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd,成為系統的第一個進程(PID 等于 1),其他進程都是它的子進程。

  通過上圖的命令,我們可以查看 Systemd 版本。

  總的來說,Systemd 的優點是功能強大,使用方便,缺點是體系龐大,非常復雜。事實上,現在還有很多人反對使用 Systemd,理由就是它過于復雜,與操作系統的其他部分強耦合,違反”keep simple, keep stupid”的 Unix 哲學。

  上圖就是 Systemd 的架構圖,看著有點嚇人!

二、systemctl 命令
 Systemd 并不是一個命令,而是一組命令,涉及到系統管理的方方面面。
  下面我來介紹幾個常用的命令

# 啟動 redis 服務
$ sudo systemctl start redis
 
# 重啟 redis 服務
$ sudo systemctl restart redis
 
# 查看 redis 服務狀態
$ sudo systemctl status redis
 
# 重啟系統
$ sudo systemctl reboot
 
# 關閉系統,切斷電源
$ sudo systemctl poweroff
 

三、利用 systemctl 添加自定義服務
  在日常開發中,我們難免搭建各種各樣的服務,這時,我們可以利用 systemctl 添加我們需要的服務。

  以我的系統為例,配置服務可以到上圖的目錄中,system 存放了系統配置的服務,user 目錄存放用戶自定義配置的服務,當然,你也可以把服務放到 system 中

  上圖是已經搭好的 ECF 服務,分別有 Unit、Service、Install 三個關鍵詞

[Unit]
Description : 服務的簡單描述
Documentation:服務文檔  
Before、After: 定義啟動順序。Before=xxx.service, 代表本服務在 xxx.service 啟動之前啟動。After=xxx.service, 代表本服務在 xxx.service 之后啟動。
Requires:這個單元啟動了,它需要的單元也會被啟動;它需要的單元被停止了,這個單元也停止了。
Wants:推薦使用。這個單元啟動了,它需要的單元也會被啟動;它需要的單元被停止了,對本單元沒有影響。
[Service]
Type=simple(默認值):systemd 認為該服務將立即啟動。服務進程不會 fork。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是 socket 激活型。
Type=forking:systemd 認為當該服務進程 fork,且父進程退出后服務啟動成功。對于常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便 systemd 能夠跟蹤服務的主進程。
Type=oneshot:這一選項適用于只執行一項任務、隨后立即退出的服務。可能需要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之后仍然認為服務處于激活狀態。
Type=notify:與 Type=simple 相同,但約定服務會在就緒后向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。 
Type=dbus:若以此方式啟動,當指定的 BusName 出現在 DBus 系統總線上時,systemd 認為服務就緒。
Type=idle: systemd 會等待所有任務(Jobs) 處理完成后,才開始執行 idle 類型的單元。除此之外,其他行為和 Type=simple 類似。
PIDFile:pid 文件路徑
ExecStart:指定啟動單元的命令或者腳本,ExecStartPre 和 ExecStartPost 節指定在 ExecStart 之前或者之后用戶自定義執行的腳本。Type=oneshot 允許指定多個希望順序執行的用戶自定義命令。
ExecReload:指定單元停止時執行的命令或者腳本。
ExecStop:指定單元停止時執行的命令或者腳本。
PrivateTmp:True 表示給服務分配獨立的臨時空間
Restart:這個選項如果被允許,服務重啟的時候進程會退出,會通過 systemctl 命令執行清除并重啟的操作。 
RemainAfterExit:如果設置這個選擇為真,服務會被認為是在激活狀態,即使所以的進程已經退出,默認的值為假,這個選項只有在 Type=oneshot 時需要被配置。 
[Install]
Alias:為單元提供一個空間分離的附加名字。
RequiredBy:單元被允許運行需要的一系列依賴單元,RequiredBy 列表從 Require 獲得依賴信息。
WantBy:單元被允許運行需要的弱依賴性單元,Wantby 從 Want 列表獲得依賴信息。
Also:指出和單元一起安裝或者被協助的單元。
DefaultInstance:實例單元的限制,這個選項指定如果單元被允許運行默認的實例。

關于“linux 中如何使用 systemctl 命令”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-07發表,共計2531字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 社会| 舒城县| 兰溪市| 昌乐县| 辽源市| 资兴市| 思茅市| 岑巩县| 定边县| 云阳县| 淮阳县| 金山区| 顺义区| 富宁县| 锡林浩特市| 高尔夫| 天门市| 满洲里市| 东乡| 郸城县| 武威市| 长阳| 响水县| 六枝特区| 遂川县| 枝江市| 铅山县| 团风县| 韶关市| 雅江县| 波密县| 正宁县| 荔波县| 南雄市| 娄底市| 丹阳市| 寿阳县| 永仁县| 丰顺县| 迭部县| 怀宁县|