首頁 > 軟體

CentOS 7服務控制及優化啟動過程

2020-06-16 16:30:39

CentOS 7系統服務控制

在 CentOS系統中,各種系統服務的控制指令碼預設放在/usr/lib/systemd目錄下。通過systemctl命令工具可以實現對指定系統服務的控制。

  • systemctl命令

    • 常用格式

    systemctl [控制型別] [服務名稱]

    • 控制型別

    start(啟動):執行指定的系統服務程式,實現服務功能。

    stop(停止):終止指定的系統服務程式,關閉相應的功能。

    restart(重新啟動):先退出,再重新執行指定的系統服務程式。(慎用)

    reload(過載):不退出服務程式,只是重新整理設定。

    status(檢視狀態):檢視指定的系統服務的執行狀態及相關資訊。

[root@localhost ~]# systemctl start httpd     //啟動httpd服務
[root@localhost ~]# systemctl status httpd    //檢視httpd服務執行狀態及相關資訊
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2019-08-27 14:18:52 CST; 32s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1896 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1896 /usr/sbin/httpd -DFOREGROUND
           ├─1899 /usr/sbin/httpd -DFOREGROUND
           ├─1900 /usr/sbin/httpd -DFOREGROUND
           ├─1901 /usr/sbin/httpd -DFOREGROUND
           ├─1903 /usr/sbin/httpd -DFOREGROUND
           └─1905 /usr/sbin/httpd -DFOREGROUND

8月 27 14:18:52 localhost.localdomain systemd[1]: Starting The Apache HTTP Se...
8月 27 14:18:52 localhost.localdomain httpd[1896]: AH00558: httpd: Could not ...
8月 27 14:18:52 localhost.localdomain systemd[1]: Started The Apache HTTP Ser...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl stop httpd      //關閉httpd服務
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)                    //服務處於關閉狀態
     Docs: man:httpd(8)
           man:apachectl(8)

8月 27 14:18:52 localhost.localdomain systemd[1]: Starting The Apache HTTP Se...
8月 27 14:18:52 localhost.localdomain httpd[1896]: AH00558: httpd: Could not ...
8月 27 14:18:52 localhost.localdomain systemd[1]: Started The Apache HTTP Ser...
8月 27 14:20:06 localhost.localdomain systemd[1]: Stopping The Apache HTTP Se...
8月 27 14:20:07 localhost.localdomain systemd[1]: Stopped The Apache HTTP Ser...
Hint: Some lines were ellipsized, use -l to show in full.
  • 注意:對於在實際生產環境中執行的伺服器,不要輕易執行 stop 或restart操作,以免造成用戶端存取中斷,帶來不必要的損失。

切換執行級別

執行級就是作業系統當前正在執行的功能級別。 它讓一些程式在一個級別啟動,而另外一個級別的時候不啟動。

Linux系統的有效登入模式有0~9共十種,不過沿用UNIX系統的至多6種的限制,一般只有1到6有效。從1到6 ,具有不同的功能。

執行級別Systemd的target說明
0 target 關機狀態,使用該級別時將會關閉主機
1 rescue.target 單使用者模式,不需要密碼驗證即可登入系統,多用於系統維護
2 multi-user.target 使用者定 義/域特定執行級別。預設等同於3
3 multi-user.target 字元介面的完整多使用者模式,大多數伺服器主機執行在此級別
4 multi-user.target 使用者定義/域特定執行級別。預設等同於3
5 graphical.target 圖形介面的多使用者模式,提供了圖形桌面操作環境
6 reboot.target 重新啟動,使用該級別時將會重新啟動主機

1、檢視當前系統執行級別

  • runlevel命令
[root@localhost ~]# runlevel
N 5

2、切換系統執行級別

當使用者需要將系統切換到其他執行級別時,可以通過傳統的 init程式進行,只要使用 與執行級別相對應的數位(0~6)作為命令引數即可,或者使用systemctl 命令進行目標切換。

  • init程式切換
[root@localhost ~]# init 3

  • systemctl工具切換
    • systemctl isolate graphical.target 切換到圖形介面(inin 5)
    • systemctl isolate multi-user.target 切換到字元介面(inin 3)

  • 設定開機啟動自動進入字元介面。

    ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

    (設定開機啟動為字元化介面)

    systemctl get-default:檢視當前開機啟動級別

[root@localhost ~]# systemctl get-default     //檢視當前啟動級別狀態
graphical.target                               //圖形化介面
[root@localhost ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target                           //設定開啟啟動為字元介面
[root@localhost ~]# systemctl get-default                    //檢視當前啟動級別狀態
multi-user.target                           //字元化介面

優化啟動過程

Linux作業系統中包含了大量的服務程式,這些服務程式在切換執行級別時根據預設的狀態進行啟動或終止。其中有不少系統服務可能並不是使用者需要的,但是預設也執行了。

那麼,在Linux作業系統中預設包括哪些系統服務?各自的作用是什麼?如何控制開機後自動執行的系統服務,以減少資源佔用、提高系統執行效率呢?

1.常見的系統服務

在 CentOS 系統中,預設安裝的系統服務多達100餘種,這些系統服務為使用者提供了豐富的應用服務。只有了解各個系統服務的用途,才能有選擇地進行優化操作,實現按需啟用Linux 服務。

了 CentOS 中常見的一些系統服務:

服務名稱用途簡介備註
atd 延期、定時執行任務 建議關閉
bluetooth 發現、認證藍牙相關裝置 建議關閉
crond 按預定週期執行計劃任務 建議開啟
irqbalance 多核心 CPU 處理器的排程支援 建議開啟
kdump 記錄核心崩潰時的記憶體資訊 建議關閉
lvm2-monitor LVM 管理及監控 建議開啟
netfs 存取共用資料夾等網路檔案系統 建議開啟
network 設定及使用網絡卡、網路地址 建議開啟
restorecond SELinux 安全機制的檔案監控和恢復功能 建議關閉
rhnsd 存取 Red Hat Network,獲取通知、提交訂閱等 建議關閉
rpcgssd 管理 NFS存取中的客戶程式語境 建議關閉
saslauthd 基於文字的身份認證 建議關閉
smartd 監控本地硬碟的狀態並行送故障報告 建議開啟
smb 檔案共用服務 建議關閉
sshd 提供遠端登入和管理 Linux主機的功能 建議開啟
rsyslog 記錄核心、系統的紀錄檔訊息 建議開啟
vsftpd 通過FTP提供檔案上傳、下載功能 建議關閉
  • 注意:必須強調的是,這些服務到底是選擇開啟還是關閉,應根據主機的實際功能需求來定,不要生搬硬套。

2.優化開機自動載入的服務

Linux 作業系統在每次開機後會進入預設的systemd執行目標(如字元模式或圖形模式), 並執行該目標中預設設為啟動的各種系統服務。若要禁止某些系統服務自動執行,可以使用ntsysv或者systemctl工具進行優化。

  • ntsysv工具

    ntsysv工具可以在字元模式中執行,為使用者提供一個仿圖形的互動式操作介面,專門用於集中設定各種系統服務的啟動狀態。當需要同時設定多個服務的啟動狀態時,使用ntsysv工具會非常方便。

[root@localhost ~]# ntsysv      // 輸入命令進入仿圖形互動式操作介面

操作時按↑、↓方向鍵來選擇不同的系統服務,按Space(空格)鍵設定服務的預設啟動狀態( [*]表示啟動,[ ]表示關閉)。如果要檢視所選定服務的說明資訊,按 F1鍵可以獲取幫助。

  • systemctl工具

    systemctl工具與ntsysv的功能類似,但是systemctl不提供互動式的操作介面,它用於查詢或設定系統服務的預設啟動狀態。當需要設定某一個服務在當前執行目標中的預設啟動狀態時,使用systemctl工具會更有效率。

    • 命令格式

    • systemctl 控制選項 服務名稱
    • 常用選項
      • enable:開機自動啟動。
      • disable:開機自動關閉。
      • is-enable:檢視開機啟動狀態。
[root@localhost ~]# systemctl enable httpd.service    //設定開機自動啟動httpd服務
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd.service   //檢視httpd開機啟動狀態
enabled
[root@localhost ~]# systemctl disable httpd.service     //設定開機不啟動httpd服務
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd.service   ////檢視httpd開機啟動狀態
disabled

補充內容

在當前系統下執行systemctl list-units --type=service命令可以檢視當前系統中所有已啟用的系統服務。

[root@localhost ~]# systemctl list-units --type=service //檢視當前系統中所有已啟用的系統服務
UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
abrt-ccpp.service                  loaded active exited  Install ABRT coredump hook
abrt-oops.service                  loaded active running ABRT kernel log watcher
abrt-xorg.service                  loaded active running ABRT Xorg log watcher
abrtd.service                      loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service            loaded active running Accounts Service
alsa-state.service                 loaded active running Manage Sound Card State (restore and store)
atd.service                        loaded active running Job spooling tools
auditd.service                     loaded active running Security Auditing Service
avahi-daemon.service               loaded active running Avahi mDNS/DNS-SD Stack
blk-availability.service           loaded active exited  Availability of block devices
...//省略部分內容...

謝謝觀看,希望能對大家有所幫助!


IT145.com E-mail:sddin#qq.com