在 Linux 環境下,有效監控系統效能並善用自動化技術是確保系統穩定執行的關鍵。本文將介紹多種常用工具,例如 mpstat 監控 CPU 效能、pidstat 監控個別行程、cifsiostat 監控 CIFS/Samba 檔案系統,並示範如何結合 Shell 指令碼與 Cron 排程,自動化備份等例行性任務。此外,文章也涵蓋 NTP 和 Chrony 時間同步設定,以及 Samba 伺服器的佈署與設定,以確保跨平台檔案分享和互通性。透過這些技術的整合運用,系統管理員可以更有效率地管理系統資源,減少人為錯誤,並提升整體系統的可靠性。
使用 tapestat 檢視磁帶機統計資訊(舊式技術)
由於目前大多數環境已不再使用實體磁帶機,此工具主要用於舊系統維護。
$tapestat
Linux 4.18.0-348.7.el8_5.x86_64 (server1)
09/24/2022 _x86_64_ (1 CPU)
No tape drives with statistics found
tapestat 解密:
當系統中沒有磁帶機時,tapestat 將顯示未找到相關統計資訊的訊息。若您的系統仍在使用磁帶機,該命令將提供相關的統計資料。
使用 mpstat 取得處理器統計資訊
mpstat 命令可用於顯示多處理器和單處理器的統計資訊。
檢視所有處理器統計資訊:
$mpstat
Linux
5..4.-125-generic (server2)
09/25/2022 _x86_64_ (2 CPU)
10:06:16 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:06:16 AM all .920 .010 .910 .200 .000 .250 .000 .000 .000 .972
檢視特定處理器統計資訊:
$mpstat -P
Linux
5..4.-125-generic (server2)
09/25/2022 _x86_64_ (2 CPU)
10::43 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10::43 AM .710 .010 .640 .140 .000 .080 .000 .000 .000 .984
mpstat 解密:
mpstat 能夠顯示每個處理器的詳細使用率,包括使用者模式、系統模式、等待 I/O 等多項指標。透過 -P引數,您可以檢視特定處理器的統計資訊。
監控系統效能與容量
在管理 Linux 系統時,監控系統的效能和容量是確保系統穩定運作的關鍵步驟。本章將介紹多種工具和方法,幫助系統管理員全面監控和管理系統資源。
使用 mpstat 監控處理器統計資訊
mpstat 是一個用於報告處理器相關統計資訊的工具。它能夠提供有關 CPU 使用率的詳細資料,包括使用者模式、系統模式、等待 I/O 操作等各個方面的統計。
基本用法
執行 mpstat 命令可以顯示自系統啟動以來所有 CPU 的平均統計資訊:
$ mpstat
Linux 5.4.0-125-generic (server2) 09/25/2022 _x86_64_ (2 CPU)
09:56:28 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:56:28 AM all 2.05 0.02 2.01 0.44 0.00 0.44 0.00 0.00 0.00 95.05
檢視所有處理器的統計資訊
使用 -P ALL 選項,可以檢視所有處理器的詳細統計資訊:
$ mpstat -P ALL
Linux 5.4.0-125-generic (server2) 09/25/2022 _x86_64_ (2 CPU)
09:56:28 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:56:28 AM all 2.05 0.02 2.01 0.44 0.00 0.44 0.00 0.00 0.00 95.05
09:56:28 AM 0 1.93 0.02 2.11 0.44 0.00 0.65 0.00 0.00 0.00 94.84
09:56:28 AM 1 2.16 0.02 1.91 0.43 0.00 0.22 0.00 0.00 0.00 95.25
設定間隔和重複次數
與其他 “stat” 命令類別似,mpstat 可以設定間隔時間和重複次數。例如,以下命令每隔5秒執行一次 mpstat,共執行3次:
$ mpstat 5 3
Linux 5.4.0-125-generic (server2) 09/25/2022 _x86_64_ (2 CPU)
10:26:53 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:26:58 AM all 0.00 0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.00 99.90
10:27:03 AM all 0.00 0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.00 99.90
10:27:08 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 0.07 0.00 0.00 0.00 99.93
#### 程式碼解析:
mpstat:用於報告處理器的統計資訊。-P ALL:顯示所有處理器的統計資訊。5 3:設定mpstat每隔5秒執行一次,共執行3次。
使用 pidstat監控 Linux 行程
pidstat 命令用於監控目前由 Linux核心管理的個別行程。預設情況下,它只顯示活躍的行程(具有非零統計值的行程)。
基本用法
執行 pidstat 命令可以顯示目前活躍行程的統計資訊:
$ pidstat
Linux5 .4 .0 -125 -generic (server2)09 /25 /2022_x86_64_(2CPU)
11 :19 :08AMUIDPID% usr% system% guest% wait% CPUCPUCommand
11 :19 :08AM01120 .020 .040 .000 .010 .060systemd
11 :19 :08AM020 .000 .000 .000 .000 .001kthreadd
11 :19 :08AM0100 .000 .010 .000 .000 .010ksoftirqd /0
...
檢視特定使用者的行程統計資訊
使用 -d 和 -U選項,可以檢視特定使用者的行程磁碟使用統計資訊:
$ pidstat -d -U khess
Linux5 .4 .0 -125 -generic (server2)09 /25 /2022_x86_64_(2CPU)
11 :36 :26AMUSERPIDkB_rd /skB_wr /skB_ccwr /siodelayCommand
11 :36 :26AMkhess11310 .030 .000 .001systemd
11 :36 :26AMkhess12390 .790 .000 .002bash
#### 程式碼解析:
pidstat:用於監控 Linux 行程的統計資訊。-d:顯示行程的磁碟使用統計資訊。-U khess:指定要檢視的使用者名稱。
使用 cifsiostat監控 Windows 相容檔案系統統計資訊
cifsiostat 命令用於顯示關於 CIFS(Common Internet File System)或 Samba檔案系統的讀寫操作統計資訊。
基本用法
執行 cifsiostat 命令可以顯示 CIFS/Samba檔案系統的統計資訊:
$ cifsiostat
Filesystem :rB /swB /srops /swops /sfo /sfc /sfd /s
\\ server2\common0 .000 .000 .000 .001 .001 .000 .00
#### 程式碼解析:
cifsiostat:用於顯示 CIFS/Samba檔案系統的統計資訊。- 輸出結果包括讀取位元組數、寫入位元組數、讀取操作次數、寫入操作次數等。
自動化與指令碼編寫
系統管理員盡可能地自動化他們的工作,但並非所有任務都能自動化。自動化有其優勢,但也有侷限性。本章將討論自動化的優缺點,以及在自動化過程中可能遇到的挑戰,如時序問題、系統故障、指令碼錯誤和人為干預等。
為什麼要自動化?
一些系統管理員曾問我為什麼要進行自動化。答案很簡單:這樣你就可以專注於更高層級的工作,而讓電腦系統處理那些必須執行的日常瑣事。這些瑣事包括手動建立備份、將備份複製到存檔位置、檢查每個系統的容量、安裝更新、檢查日誌檔案中的錯誤以及檢查執行時間等。
自動化的好處
自動化可以減少人為錯誤,提高工作效率,讓系統管理員有更多時間專注於重要的任務,如系統安全、測試新軟體和提升指令碼編寫技能。
#### 程式碼解析:
本文討論了自動化的好處和必要性,沒有特定的程式碼範例。
自動化:節省時間、減少錯誤與提升工作滿意度
在現今的技術環境中,我們擁有近乎無窮的運算能力,卻往往面臨時間的嚴格限制。將重複性、耗時的任務交給系統自動處理,不僅能節省時間,還能避免人為錯誤。自動化幾乎所有的重複性任務,不僅能提升工作效率,還能減少因人為疏失導致的問題。
自動化帶來的效益
基本自動化技術易於實行,能夠節省時間、金錢,並減少錯誤。系統管理員(sysadmin)透過自動化,能夠減少工作負擔,避免因重複性工作導致的倦怠感。多項研究顯示,自動化確實能提升工作滿意度。將備份、檔案傳輸、檢查備份和移除舊備份等重複性任務自動化,能夠大幅降低管理多台系統的工作量。
自動化的實踐
以下是關於自動化的五個常見問題的解答:
哪些任務應該自動化?
任何可以可靠地指令碼化的任務,即使需要使用者輸入,都應該自動化。是否有無法自動化的任務?
是的,很多工無法自動化,尤其是那些需要複雜、多步驟決策的任務。不過,可以使用各種技術(如expect、shell指令碼、Perl、PHP等指令碼語言和編譯語言)來嘗試自動化它們。是否有不應該自動化的任務?
是的。例如,不應該自動化需要將未加密的密碼儲存在文字檔案中的任務。可以使用加密密碼、金鑰檔案、有限的sudo許可權或非特權帳戶來安全地自動化任務。應該首先自動化哪個任務?
應該首先自動化備份任務。例如,建立/etc目錄的備份,並使用安全複製(SCP)將其存檔到另一台系統上。是否應該購買商業自動化解決方案?
可以先使用自己的指令碼,並在窮盡所有選項後再考慮購買商業解決方案。如果主機數量龐大,購買商業解決方案是合理的。
編寫指令碼
編寫指令碼的第一步是列出指令碼需要執行的步驟。以backup_server1.sh為例:
- 建立
/etc目錄的tar檔案。 - 壓縮tar檔案。
- 將檔案傳輸到伺服器
archive1。
指令碼內容如下:
#!/bin/bash
# 建立/etc的tar檔案
sudo tar cvf server1_etc.tar /etc
# 壓縮tar檔案
gzip -9 server1_etc.tar
# 將檔案傳輸到archive1的/server1/backups目錄
scp server1_etc.tar.gz archive1:/server1/backups
內容解密:
#!/bin/bash指定了用於執行該指令碼的shell。sudo tar cvf server1_etc.tar /etc建立了一個名為server1_etc.tar的tar檔案,包含了/etc目錄的所有內容。gzip -9 server1_etc.tar使用最高壓縮率對tar檔案進行壓縮。scp server1_etc.tar.gz archive1:/server1/backups將壓縮後的檔案安全地複製到archive1伺服器的指定目錄中。
設定備份使用者和排程任務
為了提高安全性,建議建立一個專門的備份使用者(例如bur),並為該使用者設定無密碼SSH金鑰認證。同時,設定cron作業來定期執行備份指令碼。
設定範例:
# 為bur使用者設定crontab
0 2 * * * /home/bur/backup_server1.sh
這將每天凌晨2點執行備份指令碼,將/etc目錄備份到archive1伺服器上。
結語
自動化不僅能夠提升工作效率、減少錯誤,還能提高系統管理員的工作滿意度。透過編寫簡單的指令碼,可以實作備份、檔案傳輸等任務的自動化,從而節省寶貴的時間,專注於更重要的工作。建議從備份任務開始,逐步實作更多工的自動化,以提升整體的工作效率和系統管理的可靠性。
使用 cron 進行任務排程
cron 是一種用於在特定時間執行命令的工具,能夠自動化重複性任務,無論是每天、每週還是每月的特定時間。它是 Linux 系統中的一項基本工具,用於處理那些需要在特定時間執行的任務。
瞭解 cron 的工作原理
cron 的語法看似複雜,但實際上非常有規律:
# ┌───────────── 分鐘 (0 - 59)
# │ ┌───────────── 小時 (0 - 23)
# │ │ ┌───────────── 日期 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 星期幾 (0 - 6),0 和 7 都代表星期日
# │ │ │ │ │
# * * * * * 要執行的命令
這種格式定義了何時執行特定的命令或指令碼。
實際應用範例
每 5 分鐘執行一次指令碼
如果需要在每天的每 5 分鐘執行一次指令碼,可以這樣設定:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /path/to/script.sh
每週一、三、五下午 2:00 執行指令碼
若要在每週一、三、五的下午 2:00 執行指令碼,設定如下:
0 14 * * 1,3,5 /path/to/script.sh
每月 15 日早上 6:00 執行指令碼
要在每月的 15 日早上 6:00 執行指令碼,可以這樣寫:
0 6 15 * * /path/to/script.sh
注意事項
- 設定
* * * * * /path/to/script.sh將會使指令碼每分鐘執行一次,通常這不是我們想要的結果。 - 大多數監控場景下,每五分鐘執行一次已經足夠捕捉到需要的資訊。
使用網路時間協定(NTP)防止時間漂移
當多個系統需要協同工作時,保持它們的時間同步至關重要。為此,可以使用 chrony 或 ntp 這類別工具來同步系統時間。
安裝與設定 chrony
- 安裝 chrony:
$ sudo yum -y install chrony # 在 RHEL/CentOS 上 $ sudo apt install chrony # 在 Debian/Ubuntu 上 - 啟動並設定 chrony 開機自啟:
$ sudo systemctl enable chronyd $ sudo systemctl start chronyd - 檢查 chrony 狀態:此命令會顯示目前的時間同步狀態。
$ chronyc activity
設定 chrony 為本地時間伺服器
- 編輯
/etc/chrony.conf,取消註解以下兩行,並修改為你的網路設定:# Allow NTP client access from local network. allow 192.168.0.0/16 # Serve time even if not synchronized to a time source. local stratum 10 - 重啟
chronyd服務:$ sudo systemctl restart chronyd
設定客戶端使用本地時間伺服器
在客戶端的 /etc/chrony.conf 中加入以下行:
server 192.168.1.80 prefer iburst
然後重啟客戶端的 chronyd 服務,並檢查時間同步狀態:
$ chronyc sources
此設定將確保你的本地網路中的所有系統保持時間同步。
Samba在Windows相容性中的佈署
在現代資料中心中,不同系統之間的互操作性是不可或缺的。Windows、Linux和Unix系統需要能夠共存並協同工作。Samba是一個重要的工具,它使Linux和Unix系統能夠與Windows系統實作互操作,提供穩定的檔案和列印服務。
Samba的功能與優勢
Samba提供了一套實用程式,使Linux和Unix系統能夠與Windows系統分享檔案和資源。使用Samba,Linux系統可以:
- 與Windows電腦分享目錄、檔案系統和印表機
- 掛載Windows共用資料夾
- 瀏覽網路上的共用資源
- 參與Windows網域驗證和授權
- 使用Windows名稱解析服務
- 使用共用印表機
同時,Windows電腦也可以:
- 瀏覽Linux共用資源
- 使用共用印表機
- 將網路磁碟機對映到Linux共用資料夾
規劃Samba環境
在佈署Samba之前,需要考慮幾個重要的問題:
- 是否需要限制共用空間的存取許可權?
- 是否允許所有使用者在共用空間中建立和複製檔案?
- 是否需要設定預設的檔案許可權?
- 是否需要唯讀資料夾?
- 共用空間是永久還是臨時的?
假設設施部門請求建立一個共用檔案空間,以下是可能的答案:
- 是的,僅限設施部門員工存取。
- 是的,所有人都可以複製和建立檔案。
- 所有人都有讀寫所有檔案的許可權。
- 是的,需要一個唯讀的「Policies」資料夾。
- 這是一個永久的共用空間。
根據這些答案,可以開始設定Samba環境。首先,建立一個名為「facilities」的群組,並將相關使用者加入其中。然後,建立一個共用目錄(如/opt/facilities),並設定適當的群組擁有權和許可權。
$ sudo groupadd -g 9001 facilities
$ sudo usermod -g facilities atran
$ sudo usermod -g facilities areed
$ sudo usermod -g facilities akumar
$ sudo mkdir /opt/facilities
$ sudo chgrp facilities /opt/facilities
$ sudo chmod 770 /opt/facilities
設定細節解析:
groupadd命令用於建立一個新的群組。usermod命令用於將使用者新增到指定的群組。mkdir命令用於建立新的目錄。chgrp命令用於更改目錄的群組擁有權。chmod命令用於更改目錄的許可權。
接下來,建立一個唯讀的子目錄「Policies」。
$ sudo mkdir /opt/facilities/Policies
$ sudo chmod 740 /opt/facilities/Policies
設定細節解析:
- 在
/opt/facilities下建立了一個名為「Policies」的子目錄。 - 將「Policies」目錄的許可權設定為740,確保只有擁有者和群組可以讀取,而其他人無法存取。
這樣,共用空間的設定就完成了,接下來就可以進行Samba的組態,使其能夠與Windows系統協同工作。