第7章 後臺服務程式
阿新 • • 發佈:2018-12-24
系統保持安全執行是非常重要的,仔細的管理好系統服務的准入對此是很有幫助的。系統需要對一些特殊程式提供准入(比如WEB伺服器的HTTPD服務)。然而,如果你不需要此類服務,那麼你應該關閉它,以讓你的系統可能暴露的BUG最小化。
本章講的是系統執行時的服務的相關配置,以及如何使用systemctl工具從命令列重啟服務。
保持系統安全:當你啟用一項新的服務時,記得防火牆和selinux也需要一同配置。配置一項新服務時最容易犯的錯誤就是沒有修改防火牆和selinux配置,以允許其啟用。
7.1 配置服務
FEDORA使用systemctl工具配置系統啟動時自動啟用的服務。
不要使用ntsysv和chkconfig工具:儘管仍然可以使用ntsysv和chkconfig工具管理服務(通過安裝到/etc/rc.d/init.d/目錄裡的指令碼),但仍建議你使用systemctl工具來管理服務。
啟用irqbalance服務:建議啟用irqbalance服務。大多數情況下,這個服務已在FEDORA23上自動安裝和配置,驗證執行狀態使用如下命令:
systemctl status irqbalance.service
7.1.1 啟用服務
系統啟動時自動啟用服務的配置方法:
systemctl enable service_name.service
下次系統啟動時將自動啟動該服務。
例子7.1 啟用HTTPD服務
假設你正在執行apache http伺服器,httpd包已經安裝,你可以讓系統啟動時自動啟動此服務:
~]# systemctl enable httpd.service
7.1.2 停用服務
關閉某項服務隨系統自動啟動的命令如下:
systemctl disable service_name.service
下次系統啟動時,該服務將不會啟動。
例子7.2 停用telnet服務
為了例系統更安全,建議使用者關閉不安全的連線協議,比如telnet。關閉該服務的命令如下:
~]# systemctl disable telnet.service
7.2 執行服務
Systemctl允許你啟動、停止或重啟服務。
不要使用service工具:儘管你可以使用service命令管理服務(基於/etc/rc.d/init.d/目錄下的指令碼),但建議使用systemctl工具來管理。
7.2.1 檢查服務的狀態
下面的命令檢查服務的執行狀態:
systemctl status service_name.service
這個命令會顯示服務狀態的詳細資訊。如果你只是想驗證服務是否正在執行,你可以使用下面的systemctl命令:
systemctl is-active service_name.service
例子7.3 檢查httpd服務狀態
“例子7.1 啟用httpd服務”指出瞭如何在系統啟動時自動啟用httpd服務。假設系統已經重啟,你現在想驗證一下httpd是否在執行:
~]$ systemctl is-active httpd.service
Active
你可以檢視詳細狀態:
~]$ systemctl status httpd.service
httpd.service - LSB: start and stop Apache HTTP Server
Loaded: loaded (/etc/rc.d/init.d/httpd)
Active: active (running) since Mon, 23 May 2011 21:38:57 +0200; 27s ago
Process: 2997 ExecStart=/etc/rc.d/init.d/httpd start (code=exited, status=0/
SUCCESS)
Main PID: 3002 (httpd)
CGroup: name=systemd:/system/httpd.service
├ 3002 /usr/sbin/httpd
├ 3004 /usr/sbin/httpd
├ 3005 /usr/sbin/httpd
├ 3006 /usr/sbin/httpd
├ 3007 /usr/sbin/httpd
├ 3008 /usr/sbin/httpd
├ 3009 /usr/sbin/httpd
├ 3010 /usr/sbin/httpd
└ 3011 /usr/sbin/httpd
顯示所有正在執行的服務,可以使用如下命令:
systemctl list-units --type=service
這個命令提供的資訊中:
Unit-systemd unit的名字,這個例子中顯示的是服務的名字
Load-顯示是否正確裝載
Active-高階unit啟用狀態
Sub-低階unit啟用狀態
Job-unit所佔用的任務
Description-unit的簡介
例子7.4 顯示所有啟用的服務
~]$ systemctl list-units --type=service
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
abrt-ccpp.service loaded active exited LSB: Installs coredump handler which
saves segfault data
abrt-oops.service loaded active running LSB: Watches system log for oops
messages, creates ABRT dump directories for each oops
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
atd.service loaded active running Job spooling tools
[output truncated]
這個例子中顯示,abrtd服務已經裝載,啟用,且正在執行,沒有對應的任務。
7.2.2 執行服務
systemctl start service_name.service
這個命令將立即啟動對應的服務。
例子7.5 啟動httpd服務
~]# systemctl start httpd.service
7.2.3 關閉服務
systemctl stop service_name.service
例子7.6 關閉telnet服務
~]# systemctl stop telnet.service
7.2.4 重啟服務
systemctl restart service_name.service
例子7.7 重啟sshd服務
讓/etc/ssh/sshd_config的配置生效,需要重啟sshd服務:
~]# systemctl restart sshd.service
7.3 其它資訊