<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Linux和Shell的經典面試題

      一、Linux 基礎

      1. 常用命令

      (1)、如何查看系統當前運行的進程?

      答案:ps  aux  或  top/htop

       

      (2)、grep 和 find 的區別是什么?

      grep 用于文本內容搜索,find 用于文件名/屬性搜索

       

      (3)、如何查看一個文件的最后10行?如何實時監控文件內容變化?

      tail -n 10 filename

      tail  -f  filename

       

      (4)、sed和awk 的主要用途是什么?舉例說明。

      1)、sed 用于流式文本替換/編輯 

      ①、文本替換:基于正則表達式快速替換文本。
      ②、行級操作:刪除、插入、追加特定行。
      ③、流式編輯:逐行處理輸入流,無需直接修改原文件(除非使用 -i 參數)。

      示例: 

      替換文本(將文件中的 "apple" 替換為 "orange"):
      sed 's/apple/orange/g' file.txt # 輸出替換結果到屏幕
      sed -i 's/apple/orange/g' file.txt # 直接修改原文件

      刪除空行:
      sed '/^$/d' file.txt # 刪除所有空行

      插入文本(在第 3 行前插入一行 "Hello"):
      sed '3i Hello' file.txt

      僅處理匹配行(刪除包含 "error" 的行):
      sed '/error/d' file.txt

      2)、awk 處理結構化文本。

      ①、結構化文本處理:按列(字段)處理數據,默認以空格/TAB 分隔。
      ②、數據計算:支持數學運算、統計、格式化輸出。
      ③、模式匹配:根據條件過濾和處理行。

      示例:
      提取特定列(輸出第 1 列和第 3 列):
      awk '{print \$1, \$3}' file.txt

      條件過濾(輸出第 2 列大于 100 的行):
      awk '$2 > 100 {print $0}' file.txt

      計算總和(統計第 3 列的總和):
      awk '{sum += $3} END {print sum}' file.txt

      自定義分隔符(以逗號分隔的 CSV 文件處理):
      awk -F ',' '{print $2}' data.csv

      復雜邏輯(同時匹配多個條件并格式化輸出):
      awk '/error/ && $4 == "2023" {print "Error at line", NR, ":", $0}' log.txt

       

      核心區別:
      工具     定位                         適用場景                                               核心能力
      sed      行級流編輯器           簡單替換、刪除、插入文本                   正則替換、行操作
      awk      列級文本分析器       復雜結構化數據處理、統計、計算        字段處理、條件過濾、編程邏輯。

       

      總結:
      簡單替換/刪除:優先使用 sed(如 s/old/new/g)。
      列處理/復雜邏輯:優先使用 awk(如統計、條件過濾、多列操作)。
      兩者均可通過管道 (|) 與其他命令組合,實現靈活的文本處理流水線。

       

      2. 文件與權限

      (1)、如何修改文件權限為 755?如何遞歸修改目錄權限?

      chmod 755 filename,

      chmod -R 755 dirname

       

      (2)、解釋 chmod +x 和 chmod 755 的區別。

      +x 僅添加執行權限

      755 設置所有者的rwx,其他用戶的rx

       

      (3)、什么是軟鏈接(Symbolic Link)和硬鏈接(Hard Link)?區別是什么?

      軟鏈接是文件指針,可跨文件系統。           使用ln -s命令創建,例如:ln -s /path/to/source /path/to/symlink

      硬鏈接是同一inode的別名,不可跨文件系統。使用ln命令創建,例如:ln /path/to/source /path/to/hardlink

       

      3. 系統管理

      (1)、查看運行進程??

      ps、top可查看進程狀態?。

       

      (2)、如何查看系統負載?如何定位CPU或內存瓶頸?

      uptime、top、vmstat、free -h

       

      CPU瓶頸定位:

      (1)、uptime、 top  查看 Load average ,3個值分別表示CPU在1分鐘,5分鐘和15分鐘內的運行隊列的大小。若負載值高于 CPU 核心數,說明系統過載。

      (2)、通過top命令查看

        a) User Time:65%~70%

        b) System Time:30%~35%

        c) Idle:0%~5%

        如果us,sy高于這個指標可以判斷CPU有瓶頸。

      內存瓶頸定位:

      (1)、free -h:查看總內存、已用內存、緩存(cache/buffer)。
      (2)、top:按內存排序(Shift + M)。
      (3)、vmstat 1:關注 si(swap in)、so(swap out)。

       

      (3)、如何查看磁盤使用情況?如何找出大文件?

      df -h

      du -sh * | sort -rh

       

      (4)、什么是僵尸進程(Zombie Process)?如何清理?

      已終止但未被父進程回收的進程,需終止其父進程。

      1)如何定位是否存在僵尸進程?

      通過top命令查看有多少個處于 “ 僵尸(zombie)” 狀態。如果前面的數字不為0,說明存在僵尸進程。

      2)清理僵尸進程的步驟:

      首先,通過在終端中 使用 ps 命令 我們列舉僵尸進程,得到它們的進程 ID:
      ps ux | awk '{if($8=="Z+") print}'
      ps ux 命令輸出的第 8 列顯示了進程狀態。上述命令只會打印所有處在 Z+ 狀態(表示僵尸狀態)的進程。

      確認了進程 ID 后,我們可以得到它的父進程 ID:
      ps -o ppid= -p <child_id>

      你也可以將上述兩個命令結合在一起,直接得到僵尸進程的 PID 及其父進程的 PID:
      ps -A -ostat,pid,ppid | grep -e '[zZ]'

      現在你得到了父進程 ID,使用命令行和得到的 ID 號 終于可以殺死進程了:
      kill -9 <parent_process_ID>

       

      (5)、后臺任務管理??

      & 將任務放到后臺,jobs 查看后臺任務,fg 和 bg 切換前后臺?。

       

      (6)、設置定時任務的命令? ?

      cron 用于周期性任務調度,配置文件位于 /etc/crontab?。

      minute hour day_of_month month day_of_week  <command>

       每一列代表一個時間單位,從左到右分別是分鐘、小時、日期、月份和星期幾,最后一個是命令本身。

      crontab相關命令:

      ?查看?:使用crontab -l命令。
      ?編輯?:使用crontab -e命令。完成編輯后,保存并退出編輯器,crontab會自動加載新的配置。
      ?刪除?:使用crontab -r命令。如果需要確認提示,可以加上-i選項。

       

      4. 網絡相關

      (1)、如何查看 IP 地址? ?

      使用 ifconfig、ip addr 或 hostname -I?。

       

      (2)、如何查看磁盤空間??

      df 查看磁盤使用情況,du 查看目錄空間占用?。

       

      (3)、如何查看系統監聽的端口?

      netstat -tulnp 或 ss -tulnp

       

      (4)、如何測試與遠程主機的網絡連通性?如何抓取HTTP請求?

      ping/telnet,tcpdump 或 curl/wget

       

      (5)、解釋 iptables 的作用,如何開放80端口?

      iptables是Linux系統自帶的防火墻工具。

      iptables -A INPUT -p tcp --dport 80 -j ACCEPT

       

      二、Shell 腳本

      1. 基礎語法

      (1)、如何定義和使用變量?單引號 '' 和雙引號 "" 的區別?

      Shell 變量無需聲明,直接賦值(如 var=value),通過 $var 引用?。

      單引號不解析變量,雙引號解析變量。

       

      (2)、如何傳遞參數給腳本?解釋\$0、\$1、\$#、\$@"的含義。

      $0 腳本名,$1 第一個參數,$# 參數個數,$@ 所有參數列表
      
      $? 表示上一條命令的退出狀態,$$ 為當前進程 PID。

       

      (3)、如何在腳本中將執行的bash命令的結果賦值給變量?

      使用反引號 ` 或 $() 獲取命令輸出結果(如 date=$(date +%F))?

       

      (4)、如何比較字符串和數字?舉例說明。

      字符串用 =,數字用 -eq/-ne,如 [ "$a" = "hello" ],[ $num -gt 10 ]

       

      2. 流程控制

      (1)、條件語句?

      if [ condition ]; then ... elif ... else ... fi,注意條件表達式中的空格?。

       

      (2)、循環結構?

      for 循環遍歷列表(如 for i in {1..5}; do ... done),while 循環基于條件判斷?。

       

      (3)、函數定義與調用?

      使用 function_name() { ... } 定義函數,通過 function_name  args 調用?。

       

      (4)、寫一個循環遍歷目錄下所有文件的腳本片段。

      (for file in /path/*; do ... done)

       

      (5)、如何判斷一個文件是否存在?如何判斷目錄是否存在?

      (if [ -f file ],if [ -d dir ])

       

      (6)、用 case 語句實現多條件分支的示例。

      case "變量" in
          值1)
              指令1...
          ;;
          值2)
              指令2...
          ;;
          *)
              指令3...
      esac

       

      3. 文本處理

      sed 與 awk?

      sed 's/old/new/g' file 替換文本,awk '{print $1}' 提取指定列?。

      grep 過濾內容?

      grep "pattern" file 搜索匹配行,-i 忽略大小寫,-v 反向匹配?。

       

      (1)、如何提取日志文件中的錯誤行并統計次數?

      grep "ERROR" logfile | wc -l

      awk '/ERROR/{count++} END{print count}' logfile

       

      (2)、使用 sed 替換文件中的字符串并保存。

      sed -i 's/old/new/g' filename

       

      (3)、如何按列處理文本數據?舉例使用 awk 輸出第二列。

      awk '{print $2}' filename

       

      4. 調試與錯誤處理

      (1)、如何調試Shell腳本?如何打印執行過程?

      bash -x script.sh 或在腳本中添加 set -x

      set -x 開啟調試模式,set +x 關閉;

       

      (2)、set -e 和 set -o pipefail 的作用是什么?

      set -e 遇到錯誤退出,set -o pipefail 確保管道中任意命令失敗則整體失敗

       

      (3)、如何捕獲信號(如 Ctrl+C)并執行清理操作?

      使用 trap 'cleanup' SIGINT

       

      (4)、如何將命令的執行結果輸出到文件?

      使用重定向操作符?將執行結果輸出到文件。

      > 覆蓋輸出,>> 追加輸出,2>&1 將錯誤輸出合并到標準輸出?。

       

      三、進階問題

      (1)、文件描述符

      解釋 0(stdin)、1(stdout)、2(stderr)的作用,如何將錯誤輸出重定向到文件?

      command 2> error.log

       

      (2)、進程間通信

      舉例說明命名管道(Named Pipe)的使用場景。

       

      (3)、性能優化

      如何找出系統中占用CPU最高的進程?

      top 按 P

      ps aux --sort=-%cpu | head -n 2

       

      四、實際場景題

      案例1:如何統計Nginx日志中每個IP的訪問量?

      awk '{print $1}' access.log | sort | uniq -c | sort -nr?

      使用 grep 過濾錯誤日志,awk 統計錯誤類型頻次,sort 和 uniq 去重排序?。

       

      案例2:寫一個腳本,監控某服務是否存活,若失敗則重啟。

      結合 pgrep 或 systemctl is-active 檢測,while 循環 + sleep

       

      案例3:如何快速清空一個大文件(不刪除文件)?

      truncate -s 0 filename 或 > filename

       

       
      posted @ 2025-03-10 18:49  業余磚家  閱讀(3198)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 免费夜色污私人影院在线观看| 少妇人妻av毛片在线看| 久久月本道色综合久久| 中文字幕av国产精品| 美女人妻激情乱人伦| 亚洲综合色婷婷中文字幕| 一本久道中文无码字幕av| 亚洲国产精品成人无码区| 临清市| 2022最新国产在线不卡a| 精品一精品国产一级毛片| 精品无码一区在线观看| 公喝错春药让我高潮| 日韩中文字幕国产精品| 亚洲爆乳少妇无码激情| 人妻有码av中文字幕久久琪| 99久久er这里只有精品18| 男人狂桶女人高潮嗷嗷| 97久久综合亚洲色hezyo| 伊人激情av一区二区三区| 久久久久青草线综合超碰| 国产成人一区二区三区视频免费| 色狠狠综合天天综合综合| 一区二区三区AV波多野结衣| 亚洲国产中文字幕精品| 卓资县| 国产玖玖视频| 亚洲av一本二本三本| 国产精品国产三级在线专区 | 午夜男女爽爽影院免费视频下载| 欧美成人精品三级网站视频| 日本一区二区三区激情视频| 亚洲a成人片在线观看| 一区二区三区岛国av毛片| 人妻一区二区三区三区| 额尔古纳市| 久久午夜私人影院| 女人腿张开让男人桶爽| 亚洲国产综合av在线观看| 欧美另类图区清纯亚洲| 免费无码又爽又刺激高潮虎虎视频|