第9章 控制服務和守護進程
systemd 守護進程管理Linux的啓動,一般包括服務啓動和服務管理。
紅帽Linux中。第一個啓動的進程(PID 1)是systemd。主要提供一下幾項功能:
- 並行功能(同時啓動多個服務),它可提高系統的啓動速度。
- 按需求啓動守護進程,而不需要單獨的服務。
- 自動服務依賴關係管理,可以防止長時間超時。
- 利用Linux控制組一起追蹤相關進程的方式。
systemd管理的常用單元類型:
- 服務單元具有.service擴展名,代表系統服務。
- 套接字單元具有.socket擴展名,代表systemd應監控的進程間通信(IPC)套接字。
- 路徑單元具有.path 擴展名,用於將服務的激活推遲到特點文件系統更改發生之後。
systemctl命令用於管理單元,可以縮寫單元名稱、進程樹條目和單元描述。
不戴任何參數運行systemctl命令可列出已加載和活動的單元。
systemctl list-units --type=service 命令僅列出激活狀態爲active的服務單元。--type=service 選項將列出的單元類型限制爲服務單元。 --all選項可以列出所有服務單位,不論激活狀態如何。--state== 選項可以按照LOAD、ACTIV或SUB字段中的值進行篩選。
systemctl list-units命令顯示systemd服務嘗試解析並加載到內存中的單元,不顯示已安裝但未啓動的服務。systemctl list-units-files命令查看所有已安裝的單元文件的狀態。
查看服務狀態
使用systemctl status name.type 來查看特點單元的狀態,如未提供單元類型,則systemctl 將顯示服務單元的狀態。
服務單元信息
字段 | 描述 |
loaded | 服務單元是否已加載到內存中 |
active | 服務單元是否正在運行,若是,它已運行了多久。 |
main PID | 服務的主進程ID,包括命令名稱。 |
Status | 有關該服務的其他信息。 |
關鍵字 | 描述 |
loaded | 單元配置文件已處理 |
active(running) | 正在通過一個或多個持續進程運行。 |
active(exited) | 已成功完成一次性配置。 |
active(waiting) | 運行中,但正在等待事件。 |
inactive | 不在運行。 |
enabled | 系統引導時啓動 |
disabled | 未設爲在系統引導時啓動。 |
static | 無法啓動,但可以由某一啓用的單元自動啓動。 |
systemctl is-active 驗證服務單元當前是否在活動狀態,返回active或inactive。
systemctl is-enabled 驗證服務單元是否啓用在系統引導時自動啓動,返回enabled或disabled。
systemctl is-failed 驗證單元是否啓動失敗,返回failed表示啓動中發生錯誤,active表示單元運行正常,單元被停止返回unknown或inactive。
systemctl --failed --type=service 列出所有失敗的單元。
控制系統服務
啓動和停止服務
systemctl status驗證服務是否在運行,然後以root用戶身份使用systemctl start命令。
要停止服務,則用stop參數,restart參數來重新啓動。
某些服務可以重新加載其配置文件,而無需重新啓動,這個過程被稱爲服務重新加載,使用reload參數來運行systemctl命令。systemctl reload-or-restart 命令可以自行判斷服務是否可以重新加載配置文件更改的功能,如果可重新加載,該命令將重新加載配置更改,不可用,則該命令將重新啓動服務以實施新的配置更改。
systemctl list-dependencies UNIT命令顯示啓動服務單元所需的依賴項的層次結構映射。要列出反向依賴項,需要使用--reverse選項來運行此命令。
systemctl mask sendmail.service屏蔽未屏蔽的服務。systemctl umask命令可取消屏蔽服務單元。
使服務在系統引導時啓動或停止:
systemctl enable,讓服務在系統引導時啓動服務。
systemctl disable 禁止服務自動啓動。
驗證服務是啓動還是禁止狀態,可使用systemctl is-enabled命令
systemctl list-dependencies UNIT命令顯示啓動服務單元所需的依賴項的層次結構映射。要列出反向依賴項(依賴於指定單元的單元)使用--reverse選項來運行此命令。示例:
systemctl mask 可屏蔽服務 umask 取消屏蔽。示例:
使用SSH訪問遠程命令行
OpenSSH在紅帽企業Linux系統上實施Secure Shell或SSh協議。
ssh命令使用用戶user02登錄服務器remotehost,實例:
在remotehost遠處系統上以user用戶身份運行hostname命令,而不訪問遠程交互式shell。
w命令可顯示當前登錄到計算機的用戶列表。
公鑰存儲在 /etc/ssh/ssh_known_hosts及SSH客戶端上每個用戶的~/.ssh/known_hosts文件中。
連接的每個遠程SSH服務器都將其公鑰存儲在/etc/ssh目錄下擴展名爲.pub的文件中。
OpenSSH服務由sshd的守護進程提供。它的主配置文件爲/etc/ssh/sshd——config。
ssk-keygen 命令 創建用於身份驗證的私鑰和匹配的公鑰。默認公鑰保存在~/.ssh/id_rsa.pub文件中;私鑰保存在~/.ssh/id_rsa文件在。 -f選項可以指定保存密鑰的文件。
ssh-agent 可以在會話開始時臨時將私鑰密語緩存到內存中,以實現真正的無密碼身份驗證。
ssh-copy-id命令可將SSH密鑰對的公鑰複製到目標系統。示例:
禁止超級用戶使用SSH登錄
修改/etc/ssh/sshd_config配置文件中的PermitRootLogin配置設置,以允許或禁止用戶以root身份登錄系統
PermitRootLogin yes表示允許以root身份登錄系統。禁止以root登錄要該爲no,禁止基於密碼的身份嚴重,但是允許對root執行基於私鑰的身份驗證,可設置爲PermitRootLogin without-password。 更改必須重新加載才能使更改生效。
禁止對SSH進行基於密碼的身份驗證:
修改/etc/ssh/sshd_config配置文件中的PasswordAuthentication參數,用於控制是否使用基於密碼的身份驗證,默認爲yes,表示運行。改爲no,表示禁止用於使用基於密碼的身份驗證。
每次更改/etc/ssh/sshd_config文件,必須重新加載sshd服務讓更改生效。重要 切記。