国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux基礎命令的進階用法

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-09-02 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux 運維進階:從基礎命令到系統優化的深度剖析

開篇:你是否遇到過這些崩潰時刻?

凌晨2點,正在熟睡的你被電話驚醒:"線上服務響應超時,用戶大面積投訴!" 你匆忙打開電腦,SSH 登錄服務器,面對滿屏的進程和日志,腦子一片空白——從哪里開始排查?用什么命令?怎么快速定位問題?

如果你也有過類似經歷,或者正在為"Linux 命令太多記不住"、"系統優化不知從何下手"而苦惱,那這篇文章就是為你準備的。

讀完本文,你將收獲:

? 20個高頻運維命令的進階用法(不只是 ls、cd,而是 top -Hp、strace -c 這些實戰利器)

? 5大系統性能指標的優化方案CPU、內存、磁盤I/O、網絡、進程管理全覆蓋)

? 3個生產環境真實案例拆解(附完整排查過程和可復用腳本)

? 1套系統優化檢查清單(可直接用于日常巡檢和故障預防)

一、基礎命令進階:從"會用"到"用好"

1.1 CPU 排查三劍客:top、htop、pidstat

很多人用top只會看 CPU 使用率,但真正的高手會這樣用:

關鍵命令1:定位高 CPU 進程的具體線程

# 先找到高 CPU 進程的 PID(假設是 12345)
top -c

# 查看該進程的所有線程 CPU 占用
top -Hp 12345

# 將線程 ID 轉換為 16 進制(用于匹配 jstack 輸出)
printf"%x
"12356 # 假設高 CPU 線程 ID 是 12356

踩坑經驗:我曾經只看進程級 CPU,結果某個 Java 應用的 GC 線程瘋狂占用 CPU 卻沒發現,導致排查了 3 小時。正確做法:always 使用-Hp參數查看線程級詳情。

關鍵命令2:實時監控指定進程的資源消耗

# 每 2 秒刷新一次 PID 12345 的詳細資源占用
pidstat -u -r -d -t -p 12345 2

# 參數說明:
# -u: CPU 使用統計
# -r: 內存使用統計
# -d: 磁盤 I/O 統計
# -t: 顯示線程級別信息

1.2 內存排查進階:不只是 free -h

關鍵命令3:精準定位內存泄漏進程

# 查看進程內存映射,找出異常增長的內存段
pmap -x 12345 |tail-5

# 持續監控內存增長趨勢(每 5 秒記錄一次)
whiletrue;do
 date>> mem_monitor.log
  ps aux | grep 12345 | grep -v grep >> mem_monitor.log
 sleep5
done

血淚教訓:曾經一個 Node.js 應用內存緩慢泄漏,用free -h只能看到總內存在減少,卻不知道是哪個進程。后來用smem -rs swap -p按 swap 使用量排序,立刻定位到問題進程。

1.3 磁盤 I/O 深度分析:iotop 的高級用法

關鍵命令4:找出隱藏的 I/O 殺手

# 實時顯示每個進程的磁盤讀寫速度
iotop -oP -d 2

# 參數說明:
# -o: 只顯示有 I/O 活動的進程
# -P: 只顯示進程,不顯示線程
# -d 2: 每 2 秒刷新

# 查看某個進程的 I/O 詳細信息
cat/proc/12345/io

實戰技巧:MySQL 數據庫突然變慢,CPU 和內存都正常,最后發現是日志文件寫入導致磁盤 I/O 飽和。解決方案:將innodb_flush_log_at_trx_commit從 1 改為 2,寫入性能提升 5 倍。

二、系統優化實戰:從原理到落地

2.1 CPU 優化:不只是調整 nice 值

優化方案1:CPU 親和性綁定

# 將 nginx worker 進程綁定到指定 CPU 核心
# 在 nginx.conf 中添加:
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

# 驗證綁定效果
taskset -cp$(pgrep nginx)

為什么要這樣做:避免進程在 CPU 核心間頻繁切換,減少 L1/L2 緩存失效,實測可提升 15% 性能。

優化方案2:中斷負載均衡

# 查看當前中斷分布
cat/proc/interrupts

# 將網卡中斷綁定到特定 CPU
echo2 > /proc/irq/24/smp_affinity # 24 是網卡中斷號

2.2 內存優化:科學配置才是王道

優化方案3:合理設置 swappiness

# 查看當前值
cat/proc/sys/vm/swappiness

# 臨時修改(重啟失效)
echo10 > /proc/sys/vm/swappiness

# 永久修改
echo"vm.swappiness = 10">> /etc/sysctl.conf
sysctl -p

參數選擇經驗

?數據庫服務器:設為 1-10(優先使用物理內存)

?應用服務器:設為 30-60(平衡內存和 swap)

?個人桌面:保持默認 60

踩坑提醒:不要設為 0!曾經為了"優化性能"設為 0,結果內存不足時直接 OOM Kill 掉了核心進程。

2.3 網絡優化:提升并發連接能力

優化方案4:TCP 參數調優

# 優化 TCP 連接隊列
echo'net.core.somaxconn = 65535'>> /etc/sysctl.conf
echo'net.ipv4.tcp_max_syn_backlog = 8192'>> /etc/sysctl.conf

# 優化 TIME_WAIT 狀態處理
echo'net.ipv4.tcp_tw_reuse = 1'>> /etc/sysctl.conf
echo'net.ipv4.tcp_tw_recycle = 0'>> /etc/sysctl.conf # 注意:不要開啟!

# 立即生效
sysctl -p

注意事項:tcp_tw_recycle在 NAT 環境下會導致連接異常,生產環境絕對不要開啟!

三、實戰案例:真實故障排查全過程

案例1:詭異的 CPU 100% 卻找不到進程

故障現象:監控顯示 CPU 使用率 100%,但 top 命令看不到高 CPU 進程。

排查過程

# Step 1: 檢查是否有隱藏進程
ps aux | awk'{print $3}'|sort-rn |head-10

# Step 2: 查看內核線程
ps aux | grep"[.*]"

# Step 3: 檢查 I/O wait(發現 wa 值異常高)
top
# 顯示:Cpu(s): 2.0%us, 3.0%sy, 0.0%ni, 0.0%id, 94.0%wa

# Step 4: 定位 I/O 瓶頸進程
iotop -oP
# 發現是 rsync 備份進程導致

根因:定時備份腳本使用 rsync 同步大量小文件,導致 I/O wait 飆高,CPU 看起來 100% 但實際是在等待 I/O。

解決方案

1. 將 rsync 改為增量備份:rsync -avz --delete

2. 限制 rsync 帶寬:--bwlimit=10240(限制為 10MB/s)

3. 調整備份時間到業務低峰期

案例2:內存泄漏導致的連鎖反應

完整排查腳本(可直接使用):

#!/bin/bash
# 文件名:check_memory_leak.sh
# 功能:自動檢測可能存在內存泄漏的進程

echo"=== Memory Leak Detection Script ==="
echo"Monitoring memory usage for 60 seconds..."

# 創建臨時文件
tmpfile=$(mktemp)

# 第一次采樣
ps aux --sort=-%mem |head-20 | awk'{print $2,$4,$11}'>$tmpfile.1

# 等待 60 秒
sleep60

# 第二次采樣
ps aux --sort=-%mem |head-20 | awk'{print $2,$4,$11}'>$tmpfile.2

echo-e"
=== Processes with significant memory growth ==="
echo"PID  MEM_BEFORE MEM_AFTER GROWTH COMMAND"

# 對比兩次采樣結果
whilereadpid mem1 cmd1;do
  mem2=$(grep"^$pid"$tmpfile.2 | awk'{print $2}')
 if[ ! -z"$mem2"];then
    growth=$(echo"$mem2-$mem1"| bc)
   if(( $(echo "$growth>0.5" | bc -l) ));then
     printf"%-6s %-10s %-10s %-7s %s
"
         "$pid""$mem1%""$mem2%""+$growth%""$cmd1"
   fi
 fi
done

使用方法

chmod+x check_memory_leak.sh
./check_memory_leak.sh

四、系統優化檢查清單(可直接用于日常巡檢)

每日檢查項

?CPU 負載:uptime查看 1/5/15 分鐘負載,不超過 CPU 核數的 0.7 倍

?內存使用:free -h確保可用內存 > 20%

?磁盤空間:df -h確保所有分區使用率 < 80%

?關鍵進程:systemctl status nginx/mysql/redis確保服務正常

每周優化項

?清理日志:find /var/log -name "*.log" -mtime +30 -exec rm {} ;

?檢查僵尸進程:ps aux | grep defunct

?分析慢查詢:檢查 MySQL slow query log

?更新系統:yum update --security或apt-get upgrade

每月深度優化

?磁盤碎片整理:e4defrag /dev/sda1(ext4 文件系統)

?TCP 連接分析:ss -s查看連接狀態分布

?內核參數復查:對照最佳實踐檢查/etc/sysctl.conf

結語:從被動救火到主動防御

掌握了這套"命令進階 + 優化方案 + 排查腳本"的組合拳,你就能從被動的"救火隊員"轉變為主動的"系統架構師"。記住:優秀的運維不是沒有故障,而是能在故障發生前發現征兆,在故障發生時快速恢復。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11277

    瀏覽量

    224954
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219009
  • 內存
    +關注

    關注

    9

    文章

    3209

    瀏覽量

    76358

原文標題:Linux 運維進階:從基礎命令到系統優化的深度剖析

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux find命令用法

    可以很肯定地說,find 命令Linux 后臺開發人員必須熟知的操作之一,除非您使用的是 Windows Server。
    發表于 10-12 11:27 ?894次閱讀

    SQLx的基礎用法進階用法

    SQLx是一個Rust語言的異步SQL數據庫訪問庫,支持多種數據庫,包括PostgreSQL、MySQL、SQLite等。本教程將以SQLite為例,介紹SQLx的基礎用法進階用法。 基礎
    的頭像 發表于 09-19 14:29 ?4007次閱讀

    Stream模塊的基礎用法進階用法

    有用。在本教程中,我們將介紹 Stream 模塊的基礎用法進階用法,并提供示例。 基礎用法 在本節中,我們將介紹 Stream 模塊的基礎用法
    的頭像 發表于 09-19 15:33 ?2154次閱讀

    linux中comm命令用法

    linux系統中comm命令用法詳解 linux系統下的comm命令是一個非常實用的文件對比命令
    發表于 07-04 08:22

    Linux中的35個find命令用法

    Linux查找命令Linux系統中最重要和最常用的命令之一。查找用于根據與參數匹配的文件指定的條件來搜索和查找文件和目錄列表的命令。
    的頭像 發表于 02-02 16:53 ?4417次閱讀
    <b class='flag-5'>Linux</b>中的35個find<b class='flag-5'>命令</b><b class='flag-5'>用法</b>

    詳談Linux的find命令

    find 是 Linux 下最有用的命令之一,熟練的使用它對于提高工作效率很有幫助。下面介紹它的一些用法
    的頭像 發表于 06-23 09:43 ?3649次閱讀
    詳談<b class='flag-5'>Linux</b>的find<b class='flag-5'>命令</b>

    linux的scp命令怎么用_linux的grep命令用法

    linux中,scp命令用于Linux之間復制文件和目錄,即在一臺Linux服務器中將本地的文件上傳到一臺遠端服務器,或將遠端服務器的文件下載到本地。scp是
    發表于 09-04 15:36 ?4865次閱讀
    <b class='flag-5'>linux</b>的scp<b class='flag-5'>命令</b>怎么用_<b class='flag-5'>linux</b>的grep<b class='flag-5'>命令</b><b class='flag-5'>用法</b>

    如何在Linux使用touch命令

    Linux touch命令用于更改文件時間戳。但touch命令的最常見用法是創建文件。
    的頭像 發表于 12-05 17:21 ?2913次閱讀

    Linux系統維護命令用法

    Linux有很多命令,每個命令基本可以用一篇文章介紹,本文僅簡單總結一些常用系統維護命令用法
    的頭像 發表于 04-17 14:57 ?1776次閱讀
    <b class='flag-5'>Linux</b>系統維護<b class='flag-5'>命令</b>的<b class='flag-5'>用法</b>

    基于select!宏的進階用法

    宏,它可以讓我們同時監聽多個異步事件,一旦其中一個事件觸發,就可以立即執行相應的代碼。在本教程中,我們將詳細介紹 select!宏的進階用法,并提供多個示例來幫助您更好地理解和掌握這個宏的使用方法。 進階
    的頭像 發表于 09-19 15:35 ?1724次閱讀

    linux中source命令用法

    Linux中,source命令通常用于重新執行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。source命令可以用于讀取并執行腳本文件中的命令,通常用于在當前shell環境
    的頭像 發表于 11-08 14:35 ?4059次閱讀

    linux查看物理接口的命令

    Linux操作系統提供了多種命令和工具來查看物理接口。在這篇文章中,我們將詳細介紹一些最常用和常見的命令,以及它們的用法和輸出。 ifconfig
    的頭像 發表于 11-16 16:48 ?2615次閱讀

    linux常用命令用法

    Linux是一種開源的操作系統,它以穩定、高效和安全的特點受到廣大用戶的喜愛。掌握Linux的常用命令及其用法對于操作系統的管理和開發都至關重要。本文將詳盡、詳實、細致地介紹
    的頭像 發表于 11-17 09:47 ?1474次閱讀

    總結linux命令行的主要用法

    Linux命令行是一種在Linux操作系統中通過文本界面來執行指令和管理系統的方式。它提供了豐富的功能和靈活性,幫助用戶完成各種任務。本文將詳細介紹Linux
    的頭像 發表于 11-17 10:19 ?1417次閱讀

    Linux lsof命令的基本用法

    linux 系統中,一切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看進程打開的文件、目錄,還可以查看進程監聽的端口等 socket 相關的信息。本文將介紹 lsof 命令
    的頭像 發表于 10-23 11:52 ?2868次閱讀
    <b class='flag-5'>Linux</b> lsof<b class='flag-5'>命令</b>的基本<b class='flag-5'>用法</b>