一、簡介
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-hant/n/195708.html