最終更新 9 months ago

此腳本用於快速檢視 Linux 系統的基本資訊,包括作業系統、CPU、記憶體、檔案描述符、網路設定、TCP 參數、連線追蹤與當前開啟的 TCP 連線狀況,方便系統管理與效能調校。

timmy revised this gist 9 months ago. Go to revision

1 file changed, 12 insertions, 9 deletions

system_info.sh

@@ -12,14 +12,17 @@ echo ""
12 12 echo "===== [ 檔案描述符資訊 ] ====="
13 13 echo "當前最大開啟檔案數: $(ulimit -n)"
14 14 echo "系統允許最大開啟檔案數: $(cat /proc/sys/fs/file-max)"
15 - echo "當前已開啟檔案數量: $(cat /proc/sys/fs/file-nr | awk '{print $1}')"
15 + echo "當前已開啟檔案數量: $(awk '{print $1}' /proc/sys/fs/file-nr)"
16 16
17 17 echo ""
18 18 echo "===== [ 網路設定 ] ====="
19 - echo "最大接受緩衝區 (rmem_max): $(sysctl -n net.core.rmem_max)"
20 - echo "最大傳輸緩衝區 (wmem_max): $(sysctl -n net.core.wmem_max)"
21 - echo "最大網路佇列 (netdev_max_backlog): $(sysctl -n net.core.netdev_max_backlog)"
22 - echo "最大 socket 連線數 (somaxconn): $(sysctl -n net.core.somaxconn)"
19 + for param in rmem_max wmem_max netdev_max_backlog somaxconn; do
20 + if [ -f "/proc/sys/net/core/$param" ]; then
21 + echo "$param: $(sysctl -n net.core.$param)"
22 + else
23 + echo "$param: [無此參數]"
24 + fi
25 + done
23 26
24 27 echo ""
25 28 echo "===== [ TCP 設定 ] ====="
@@ -36,10 +39,10 @@ echo "當前連線追蹤數: $(cat /proc/sys/net/netfilter/nf_conntrack_count)"
36 39
37 40 echo ""
38 41 echo "===== [ 當前開啟的 TCP 連線 ] ====="
39 - echo "總 TCP 連線數: $(netstat -ant | wc -l)"
40 - echo "TIME_WAIT 連線數: $(netstat -ant | grep TIME_WAIT | wc -l)"
41 - echo "ESTABLISHED 連線數: $(netstat -ant | grep ESTABLISHED | wc -l)"
42 + echo "總 TCP 連線數: $(ss -ant | wc -l)"
43 + echo "TIME_WAIT 連線數: $(ss -ant | grep TIME-WAIT | wc -l)"
44 + echo "ESTABLISHED 連線數: $(ss -ant | grep ESTAB | wc -l)"
42 45
43 46 echo ""
44 47 echo "===== [ 目前的 sysctl 設定 ] ====="
45 - sysctl -a | grep -E 'fs.file-max|net.core.rmem_max|net.core.wmem_max|net.core.netdev_max_backlog|net.core.somaxconn|net.ipv4.tcp_tw_reuse|net.ipv4.tcp_fin_timeout|net.ipv4.tcp_max_syn_backlog|net.ipv4.tcp_fastopen|net.ipv4.tcp_congestion_control|net.netfilter.nf_conntrack_max'
48 + sysctl -a 2>/dev/null | grep -E 'fs.file-max|net.core.somaxconn|net.ipv4.tcp_tw_reuse|net.ipv4.tcp_fin_timeout|net.ipv4.tcp_max_syn_backlog|net.ipv4.tcp_fastopen|net.ipv4.tcp_congestion_control|net.netfilter.nf_conntrack_max'

timmy revised this gist 9 months ago. Go to revision

2 files changed, 49 insertions

README.md(file created)

@@ -0,0 +1,4 @@
1 + ```bash
2 + chmod +x system_info.sh
3 + ./system_info.sh > system_report.txt
4 + ```

system_info.sh(file created)

@@ -0,0 +1,45 @@
1 + #!/bin/bash
2 +
3 + echo "===== [ 系統基本資訊 ] ====="
4 + echo "作業系統: $(lsb_release -d | cut -f2)"
5 + echo "核心版本: $(uname -r)"
6 + echo "CPU 型號: $(lscpu | grep 'Model name' | sed 's/Model name:\s*//')"
7 + echo "CPU 核心數: $(nproc)"
8 + echo "記憶體狀態:"
9 + free -h
10 +
11 + echo ""
12 + echo "===== [ 檔案描述符資訊 ] ====="
13 + echo "當前最大開啟檔案數: $(ulimit -n)"
14 + echo "系統允許最大開啟檔案數: $(cat /proc/sys/fs/file-max)"
15 + echo "當前已開啟檔案數量: $(cat /proc/sys/fs/file-nr | awk '{print $1}')"
16 +
17 + echo ""
18 + echo "===== [ 網路設定 ] ====="
19 + echo "最大接受緩衝區 (rmem_max): $(sysctl -n net.core.rmem_max)"
20 + echo "最大傳輸緩衝區 (wmem_max): $(sysctl -n net.core.wmem_max)"
21 + echo "最大網路佇列 (netdev_max_backlog): $(sysctl -n net.core.netdev_max_backlog)"
22 + echo "最大 socket 連線數 (somaxconn): $(sysctl -n net.core.somaxconn)"
23 +
24 + echo ""
25 + echo "===== [ TCP 設定 ] ====="
26 + echo "TCP TIME_WAIT 重用: $(sysctl -n net.ipv4.tcp_tw_reuse)"
27 + echo "TCP FIN_TIMEOUT: $(sysctl -n net.ipv4.tcp_fin_timeout)"
28 + echo "TCP SYN 佇列長度: $(sysctl -n net.ipv4.tcp_max_syn_backlog)"
29 + echo "TCP 快速開啟 (Fast Open): $(sysctl -n net.ipv4.tcp_fastopen)"
30 + echo "TCP 擁塞控制演算法: $(sysctl -n net.ipv4.tcp_congestion_control)"
31 +
32 + echo ""
33 + echo "===== [ 連線追蹤 (Conntrack) 設定 ] ====="
34 + echo "最大連線追蹤數: $(sysctl -n net.netfilter.nf_conntrack_max)"
35 + echo "當前連線追蹤數: $(cat /proc/sys/net/netfilter/nf_conntrack_count)"
36 +
37 + echo ""
38 + echo "===== [ 當前開啟的 TCP 連線 ] ====="
39 + echo "總 TCP 連線數: $(netstat -ant | wc -l)"
40 + echo "TIME_WAIT 連線數: $(netstat -ant | grep TIME_WAIT | wc -l)"
41 + echo "ESTABLISHED 連線數: $(netstat -ant | grep ESTABLISHED | wc -l)"
42 +
43 + echo ""
44 + echo "===== [ 目前的 sysctl 設定 ] ====="
45 + sysctl -a | grep -E 'fs.file-max|net.core.rmem_max|net.core.wmem_max|net.core.netdev_max_backlog|net.core.somaxconn|net.ipv4.tcp_tw_reuse|net.ipv4.tcp_fin_timeout|net.ipv4.tcp_max_syn_backlog|net.ipv4.tcp_fastopen|net.ipv4.tcp_congestion_control|net.netfilter.nf_conntrack_max'
Newer Older