Linux 系統效能調校與服務設定對於維護系統穩定及提升效率至關重要。本文涵蓋了多個導向的系統管理技巧,從 CPU、硬碟效能測試到 at、crontab 排程任務的運用,以及 NFS、Samba、SSH 等重要服務的設定方式,也包含 Git 版本控制系統的基礎操作與 /proc 虛擬檔案系統的應用說明,提供工程師全面的系統管理知識。
CPU壓力測試
如果你想對處理器的所有核心施加沉重的負載,可以使用以下一行命令。根據你的系統核心數,你需要重複該命令以產生足夠的工作執行緒(預設為4個執行緒),請輸入:
fullload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fullload; read; killall dd
要停止測試,只需按下Enter鍵即可。
內容解密:
fullload()函式定義了一系列使用dd命令來產生負載的任務,每個dd命令都會佔用系統資源,從而對CPU進行壓力測試。- 按下Enter鍵後,
read命令會結束,而killall dd則會終止所有正在執行的dd程式。
系統效能測試
測試硬碟效能,請輸入:
hdparm -Tt /dev/hda
檢查本地儲存寫入速度,請輸入:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync; rm -rf /tmp/output.img
顯示處理器和記憶體頻寬(單位:GB/s),請輸入:
dd if=/dev/zero of=/dev/null bs=1M count=32768
內容解密:
hdparm -Tt /dev/hda:用於測試指定硬碟的讀取速度。dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync:此命令測試寫入速度,先建立一個檔案然後刪除它。dd if=/dev/zero of=/dev/null bs=1M count=32768:透過向/dev/null寫入資料來測試處理器和記憶體頻寬。
排程任務
Linux中有兩個子系統可用於排程任務在未來某個時間執行,分別是AT和CRONTAB排程子系統。每個服務都有其優缺點。
AT排程器
第一種方法是使用 at 命令,它非常基礎且易於使用。你需要了解的是,at 命令只能在特定的時間/日期執行一次命令集。
要執行命令,請輸入:at 9:30 AM 05/10/2025 然後按下Enter。接著輸入一系列要執行的命令(例如:ls -l / > ~/at_output.txt),每輸入一條命令後按下Enter,最後按下Ctrl+D離開 at 編輯器。
內容解密:
atq:列出使用者待執行的AT命令作業。atrm job_number:刪除使用者待執行的AT命令作業。batch:當系統負載允許時執行命令。
CRONTAB排程器
第二種方法是使用 crontab 命令,它比AT服務更強大。crontab 命令可以按照固定的間隔執行作業,這是選擇哪種排程器的一個主要區別點。
使用 crontab 時,首先要了解它有六個引數。前五個引數定義了命令執行的日期和時間,第六個引數定義了要執行的命令或指令碼。
要建立一個CRON排程作業,請先輸入:crontab -e
內容解密:
- CRONTAB語法格式為:[分鐘 (0-59)] [小時 (0-23)] [月份中的日期 (1-31)] [年份中的月份 (1-12)] [星期幾 (0-6, 其中6 = 星期日)] [命令(即 /path2/script)]。
- 例如,要在1月8日的8:05執行命令,可以寫成:
05 08 08 01 * echo "Hello, World" > test_file.txt
Linux 系統管理:Crontab 與 NFS 設定
使用 Crontab 進行工作排程
在 Linux 系統中,crontab 是一個強大的工具,用於排程工作自動執行。預設情況下,crontab 的設定是針對目前登入的使用者。
檢視與編輯 Crontab 設定
- 檢視目前已定義的工作:
crontab -l - 編輯
crontab設定:crontab -e - 編輯其他使用者的
crontab設定:crontab -u user_name -e
Crontab 設定語法
- 萬用字元(
*):匹配任何值 - 範圍(
-):定義範圍,例如Mon-Fri、6-11、Jan-Feb - 多個範圍(
,):使用逗號分隔多個範圍
特殊關鍵字
CRON 支援一些預定義的特殊關鍵字,用於簡化常見的時間設定:
| 關鍵字 | 等效設定 | |
|
– |
| @yearly | 0 0 1 1 * |
| @daily | 0 0 * * * |
| @hourly | 0 * * * * |
| @reboot | 開機時執行 |
網路檔案系統(NFS)設定
NFS 允許 Linux 系統透過網路與其他電腦共用檔案。Macintosh OSX 及更高版本原生支援 NFS,而 Windows 7 及 Windows 10 也提供一定程度的支援。
安裝與設定 NFS 服務
- 檢查 NFS 服務是否已安裝:
dpkg -l | grep nfs-kernel-server - 安裝 NFS 服務:
sudo apt-get install nfs-kernel-server(適用於 Debian/Ubuntu 系統)sudo yum install nfs-utils(適用於 RHEL/CentOS 系統)
- 建立 NFS 共用目錄:
sudo mkdir -p /var/nfs/myshare sudo chmod -R 777 /var/nfs/myshare sudo chown nobody:nogroup /var/nfs/myshare
4. **設定 `/etc/exports` 檔案**:
```bash
/var/nfs/myshare 192.168.0.100(rw,sync,no_subtree_check)
* `rw`:允許客戶端讀寫存取
* `sync`:強制 NFS 在回應前將變更寫入本地儲存
* `no_subtree_check`:停用子目錄檢查,提高可靠性
- 重新啟動 NFS 服務:
sudo service nfs-kernel-server restart
設定防火牆以允許 NFS 連線
- 檢查防火牆狀態:
sudo ufw status - 允許 NFS 連線:
sudo ufw allow from any to any port nfs - 限制 NFS 連線至特定客戶端:
sudo ufw allow from 192.168.0.100 to any port nfs
安裝與設定 NFS 客戶端
- 安裝 NFS 客戶端:
sudo apt-get install nfs-common(適用於 Debian/Ubuntu 系統)sudo yum install nfs-utils(適用於 RHEL/CentOS 系統)
- 建立掛載點:
sudo mkdir -p /var/nfs/remoteshare - 掛載 NFS 共用目錄:
sudo mount 192.168.0.100:/var/nfs/myshare /var/nfs/remoteshare - 設定自動掛載(編輯
/etc/fstab):
192.168.0.100:/var/nfs/myshare /var/nfs/remoteshare nfs auto 0 0
### 加強 NFS 服務安全性(可選)
1. **編輯 `/etc/hosts.deny`**,新增以下內容以封鎖未經授權的客戶端連線:
```
rpcbind mountd nfsd statd lockd rquotad : ALL
- 編輯
/etc/hosts.allow,新增授權的客戶端 IP 位址:
rpcbind mountd nfsd statd lockd rquotad : approved_IP_address_list
3. **重新啟動 NFS 服務**:`sudo service nfs-kernel-server restart`
NFS 的設定檔包括 `/etc/default/nfs-kernel-server`、`/etc/default/nfs-common` 和 `/etc/exports`。正確設定這些檔案和防火牆規則,可以確保 NFS 服務的安全和穩定運作。
## Samba服務快速
Samba是一種允許Linux主機或存取根據Microsoft SMB的網路資源的服務,例如檔案分享、印表機和其他電腦資源。透過此服務,Linux客戶端可以連線到根據Microsoft SMB的網路,並與其他根據Windows的伺服器和客戶端分享檔案。
### 安裝Samba服務
要安裝Samba服務,請輸入以下指令:
```bash
sudo apt-get install samba
保護檔案分享安全
要為Samba檔案分享設定密碼保護,需要建立一個名為「smbgrp」的群組,並為每個使用者設定密碼。
$ sudo addgroup smbgrp
$ sudo usermod user_name -aG smbgrp
$ sudo smbpasswd -a user_name
注意:user_name帳戶必須屬於本機系統,否則無法儲存。
設定Samba
建立一個用於Samba分享的目錄:
mkdir ~/samba_share/
建立一個安全的目錄來儲存分享的檔案:
sudo mkdir -p /srv/samba/secure_shares
設定目錄的適當許可權:
sudo chmod -R 0770 /srv/samba/secure_shares
sudo chown -R root:smbgrp /srv/samba/secure_shares
編輯Samba設定檔:
nano /etc/samba/smb.conf
在檔案底部新增以下內容:
[sambashare]
comment = My Samba Share
path = /home/user_name/samba_share
read only = no
browsable = yes
儲存檔案並離開編輯器(按Ctrl+X,輸入y並按下Enter)。
內容解密:
[sambashare]:定義了一個名為sambashare的分享。comment:對分享的描述。path:分享目錄的路徑。read only:設定是否唯讀。browsable:設定是否可瀏覽。
要使變更生效,需要重新啟動Samba服務:
sudo systemctl restart smbd
或者:
sudo service smbd restart
測試Samba設定:
testparm
連線到SMB分享
開啟X-Windows中的預設檔案管理器,點選「連線到伺服器」,輸入:
smb://domain_or_ip_address/sambashare
在UFW防火牆中啟用Samba
如果系統上啟用了UFW防火牆,需要新增以下規則以允許Samba流量透過防火牆:
sudo ufw allow proto udp to any port 137 from 192.168.1.0/24
sudo ufw allow proto udp to any port 138 from 192.168.1.0/24
sudo ufw allow proto tcp to any port 139 from 192.168.1.0/24
sudo ufw allow proto tcp to any port 445 from 192.168.1.0/24
安裝SSH伺服器
Secure Shell(SSH)是現代Linux版本中預設的遠端管理工具,提供了一個加密的通訊通道來控制遠端伺服器。
安裝和設定SSH服務
如果尚未安裝SSH服務,請輸入以下指令:
sudo apt-get install openssh-server
檢查SSH服務的狀態:
sudo systemctl status ssh
如果SSH服務未執行,請輸入以下指令:
sudo systemctl enable ssh
sudo systemctl start ssh
確保防火牆允許SSH連線(預設埠22):
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
/PROC虛擬檔案系統
/proc目錄是一個虛擬檔案系統,提供有關行程、檔案系統、核心等資訊。
檢視/proc中的資訊
檢視CPU相關資訊:
cat /proc/cpuinfo
檢視目前使用的檔案系統:
cat /proc/filesystems
檢視目前使用的中斷請求:
cat /proc/interrupts
檢視裝置使用的I/O位址:
cat /proc/ioports
檢視記憶體使用情況:
cat /proc/meminfo
檢視目前載入的核心模組:
cat /proc/modules
檢視目前掛載的檔案系統:
cat /proc/mounts
檢視系統統計資訊:
cat /proc/stat
檢視交換空間使用情況:
cat /proc/swaps
檢視Linux版本資訊:
cat /proc/version
使用Git(初學者)
Git是一種版本控制系統,用於管理程式碼變更和版本。
Git概覽
圖示:Git架構圖
@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle
title Linux系統管理CrontabNFS設定與效能調校
package "軟體測試架構" {
package "測試層級" {
component [單元測試
Unit Test] as unit
component [整合測試
Integration Test] as integration
component [端對端測試
E2E Test] as e2e
}
package "測試類型" {
component [功能測試] as functional
component [效能測試] as performance
component [安全測試] as security
}
package "工具框架" {
component [pytest] as pytest
component [unittest] as unittest
component [Selenium] as selenium
component [JMeter] as jmeter
}
}
unit --> pytest : 撰寫測試
unit --> integration : 組合模組
integration --> e2e : 完整流程
functional --> selenium : UI 自動化
performance --> jmeter : 負載測試
note right of unit
測試金字塔基礎
快速回饋
高覆蓋率
end note
@enduml此圖示展示了Git的架構,從應用層到基礎設施層。
Git基本操作
更新套件管理員的儲存函式庫列表,以取得最新版本的程式、服務和函式庫:
sudo apt-get update
或者:
sudo yum update
內容解密:
sudo apt-get update:更新Debian系Linux發行版的套件列表。sudo yum update:更新RPM系Linux發行版的套件。
Git是一種版本控制系統,用於管理程式碼變更和版本。學習Git對於開發者來說至關重要。
Git 版本控制系統詳解
簡介
Git 是程式設計師(以及其他人)常用的工具,用於儲存原始碼(或其他型別內容)、追蹤變更(也稱為「版本」),並透過將其提供給他人下載或貢獻變更來分享它。Git 系統有兩個主要元件:伺服器和客戶端。伺服器元件儲存主要資料集,並向客戶端提供內容,同時接受客戶端的變更。客戶端的工作是從伺服器提取資料,並收集本地客戶端的變更,然後將其提交回伺服器。
入門
在開始使用 Git 之前,必須確保已安裝 Git 客戶端。如果未安裝,則需要在本地系統上新增它以利用它。
檢查 Git 客戶端是否已安裝
輸入以下指令檢查是否已安裝 Git 客戶端:
git --version
如果傳回結果類別似於「git version 2.x.x」,則表示客戶端已安裝。
安裝 Git 客戶端
如果未安裝 Git,請輸入以下指令進行安裝:
sudo apt-get install git
或
sudo yum install git
重要概念
本文介紹 Git 中的其他重要概念,例如儲存函式庫、分支等。
儲存函式庫
所有 Git 專案都儲存在所謂的儲存函式庫中。儲存函式庫是儲存構成專案的所有相關物件(即影像、原始碼等)的地方。您可以本地或遠端存取儲存函式庫。
本地儲存函式庫由 Git 維護的三個「樹」組成:工作目錄、索引和 HEAD。
工作目錄
這是儲存所有實際檔案的位置。若要使用現有的儲存函式庫,您必須建立一個新的儲存函式庫或將其克隆到本地電腦上。當您克隆現有的儲存函式庫時,它會建立一個完全屬於您控制的副本。
若要建立新的儲存函式庫,請先建立一個目錄(即 mkdir 目錄名稱),然後切換到該位置(即 cd 目錄名稱),最後輸入:
git init
這將建立一個新的隱藏目錄 .git,用於儲存設定檔。
若要與遠端儲存函式庫合作,您需要克隆它(基本上是建立本地副本)。輸入:
git clone 使用者名稱@主機:/路徑/到/儲存函式庫
或
git clone /路徑/到/儲存函式庫
索引
索引充當您對檔案本地副本所做的最近變更的暫存區。通常,這些是您在測試程式碼時儲存的變更。如果出現問題,您可以還原到先前儲存的檔案版本。
若要將檔案新增到索引,請輸入:
git add 檔案名稱
或
git add *
HEAD
HEAD 包含您對本地儲存函式庫中的檔案所做的最新提交版本。當您準備好將放置在索引中的所有變更提交到 HEAD 時,您需要將其「提交」到 HEAD。提交後,它們可以合併到遠端系統上的主儲存函式庫中。
若要將提出的檔案變更提交到 HEAD,請輸入:
git commit -m "提交訊息"
分支
Git 中的另一個重要概念是分支。建立儲存函式庫時,主分支被視為預設分支。分支允許使用者建立某個功能的隔離副本,以便在本地開發,然後在完成後將其合併回主分支。
若要建立名為 新功能 的新分支並切換到它,請輸入:
git checkout -b 新功能
若要切換回主分支,請輸入:
git checkout master
若要刪除建立的分支,請輸入:
git branch -d 新功能
儲存函式庫維護
建立儲存函式庫後,您需要維護它們(即提取、推播、合併程式碼變更)並保持它們的更新。
提交和合併
以下指令用於將最新的提交提取到本地儲存函式庫,以及將您所做的變更合併回主儲存函式庫,以便其他人可以存取它們。
若要使用最新的提交更新本地儲存函式庫,請輸入:
git pull
從工作目錄中提取和合併遠端變更,請輸入:
git merge master
日誌記錄
git log 指令顯示提交和提交訊息歷史記錄。日誌記錄對於查詢發生了哪些變更以及在這些提交期間是否存在任何錯誤或問題非常有用。
若要檢視對儲存函式庫所做的變更歷史記錄,請輸入:
git log
還原檔案/儲存函式庫
有時需要將檔案還原或重設為上次提交時的狀態。以下指令可協助您管理檔案還原:
若要將檔案還原到上次提交到本地儲存函式庫時的狀態,請輸入:
git checkout -- 檔案名稱