深入理解linux systemd

一、簡介

Linux systemd是一種系統和服務管理器,負責啟動和管理系統上所有的進程。它是 systemd 程序包的一部分,是最新的 Linux 發行版(例如 Fedora 和 CentOS 7)中默認的 init 系統。(注意,這段簡介文字可以直接從官網文字進行引用)

Systemd的設計目的是為了解決傳統init系統中的許多缺點。自動化系統啟動,更好的維護和管理,統一的配置文件,以及並行啟動等都是 systemd 的優點。它還提供了服務監視功能,可以在服務失敗時自動重啟服務,大大提高了系統的可靠性。

二、基本操作

Systemd通過一些簡單的命令來啟動、停止或重啟服務,其中最基本的命令包括:

1. systemctl start/stop/restart service_name

啟動、停止或重啟某個服務,其中service_name是要啟動的服務名。

2. systemctl enable/disable service_name

開機自啟某個服務,或者禁止開機自啟某個服務。

3. systemctl status service_name

查看某個服務的狀態,包括該服務是否正在運行、最後一次運行的時間、該服務所屬的進程ID以及相關的錯誤信息。

4. journalctl -u service_name

查看某個服務的日誌信息。

三、服務單元

在 Systemd 中,所有的服務都被視為單元。服務單元由單元文件(.service)定義,這些文件提供了有關服務的詳細信息,並指定在何時和如何啟動該服務。

以下是一個服務單元文件的示例:

[Unit]
Description=apache2 web server
After=network.target

[Service]
Type=forking
ExecStart=/usr/sbin/apache2ctl start
ExecReload=/usr/sbin/apache2ctl graceful
ExecStop=/usr/sbin/apache2ctl stop

[Install]
WantedBy=multi-user.target

在該文件中:

[Unit]:指定服務單元的名稱和說明。

[Service]:指定服務如何啟動、停止、重啟或重載入,以及運行服務的帳戶和許可權。

[Install]:指定服務啟動時的目標(例如multi-user.target),以及是否自動啟動。

四、系統日誌

Systemd 提供了原生的系統日誌功能,可以通過 journalctl 命令來訪問系統日誌。可以通過以下命令查看所有日誌:

journalctl

也可以查看指定服務的日誌,例如查看apache2服務的日誌:

journalctl -u apache2

為了確保日誌文件大小不超過磁碟空間,Systemd 會自動設置日誌滾動策略。日誌文件會被自動輪換,並將舊的日誌文件壓縮存檔。

五、防火牆

Systemd 使用了 firewalld 作為默認的防火牆管理器,firewalld 是一個動態管理的防火牆,支持基於 zone 的防火牆規則。可以通過以下命令來檢查默認防火牆策略:

firewall-cmd --list-all

可以通過以下命令添加一條允許SSH訪問的規則:

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

六、網路配置

在 Systemd 中,網路配置由單元文件(.network 和 .netdev)定義。這些文件提供了有關網路設備和網路介面的詳細信息,並指定在何時和如何配置網路介面。

以下是一個 .network 文件的示例:

[Match]
Name=ens33

[Network]
DHCP=yes

在該文件中,[Match] 指定了需要配置的網路介面名稱,[Network] 則指定了網路介面的配置信息。這裡使用了 DHCP=yes 來設置自動獲取 IP 地址。還可以使用 StaticAddress、DNS、Gateway 等選項來進行詳細配置。

七、定時任務

Systemd 使用了 timer 單元來實現定時任務。可以通過創建 .timer 文件來定義定時器,然後創建一個對應的 .service 文件來指定要執行的任務。以下是一個定時任務的示例:

[Unit]
Description=Run backup script every day

[Timer]
OnCalendar=*-*-* 01:00:00
Unit=backup.timer

[Install]
WantedBy=timers.target

在該文件中,[Timer] 指定了任務的執行時間和要執行的任務單元。這裡使用了 OnCalendar=*-*-* 01:00:00 來表示在每天凌晨 1 點執行任務。還可以使用 OnActiveSec、OnBootSec 等選項來指定定時器的觸發方式。

八、總結

通過深入理解 Systemd,我們可以更好地管理和維護 Linux 系統,提高系統的可靠性和可維護性。這篇文章從基本操作、服務單元、系統日誌、防火牆、網路配置和定時任務等多個方面對 Systemd 進行了詳細的介紹,希望可以幫助讀者更好地理解和應用 Systemd。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/195708.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 20:37
下一篇 2024-12-02 20:37

相關推薦

  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變數

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變數。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25
  • 深入理解byte轉int

    一、位元組與比特 在討論byte轉int之前,我們需要了解位元組和比特的概念。位元組是計算機存儲單位的一種,通常表示8個比特(bit),即1位元組=8比特。比特是計算機中最小的數據單位,是…

    編程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什麼是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一個內置小部件,它可以監測數據流(Stream)中數據的變…

    編程 2025-04-25
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25

發表回復

登錄後才能評論