文章目錄
- Ⅰ:Shell 腳本常見問題
- ①平時如何應用 Shell 腳本
- ②冒泡排序思路
- ③如何實作并發多行程
- ④過濾日訪問量最多 ip 來源(前10)
- Ⅱ:Linux 系統管理(常用命令)
- ①系統相關命令
- ②常用抓包工具
- ③Linux 系統啟動(引導)程序
Ⅰ:Shell 腳本常見問題
①平時如何應用 Shell 腳本
-
日常巡檢:查看所需系統狀況時執行該腳本;引數超過閾值時報警
-
自動化部署:一鍵部署 LNMP 等架構,省時省力
-
日志分割:日志檔案太大會不利于分析排查故障,比如 Nginx 沒有類似 Apache 的日志分割處理功能,但可以通過撰寫腳本配合周期性計劃性任務來實作日志的自動切割
-
耦合服務:例如 Rsync+Inotify,可通過 shell 腳本實作自動監控同步功能
#!/bin/bash INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/xcf1/" #INOTIFY_CMD變數:持續監控 /opt/xcf1 目錄中的創建,洗掉,移動,修改,改變時間的操作 RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/xcf1/ xixi@192.168.126.11::wwwroot" #RSYNC_CMD變數:使 xixi 用戶,/etc/server.pass 密鑰檔案,將 /opt/xcf1 目錄下的檔案進行壓縮,歸檔,保留硬鏈接檔案 #并同步至 192.168.126.11 的共享模塊定義的目錄 /var/www/html 下,并洗掉差異性內容,保持一致性 $INOTIFY_CMD | while read DIRECTORY EVENT FILE #持續監控... do if [ $(pgrep rsync | wc -l) -le 0 ] ; then #如果服務并未啟動,則執行同步 $RSYNC_CMD fi done
②冒泡排序思路
類似氣泡上涌的動作,會將資料在陣列中從小到大或從大到小不斷的向前移動,故稱冒泡排序
基本思想:
- 冒泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值
- 把較小的元素移動到陣列前面,把大的元素移動到陣列后面(也就是交換兩個元素的位置),這樣較小的元素就會像氣泡一樣從底部上升到頂部
演算法思路:
- 冒泡演算法由雙層回圈實作,其中外部回圈用于控制排序輪數,一般為要排序的陣列長度減1次,因為最后一次回圈只剩下一個陣列元素,不需要對比,同時陣列已經完成排序了
- 而內部回圈主要用于對比陣列中每個相鄰元素的大小,以確定是否交換位置,對比和交換次數隨排序輪數而減少
例:
#!/bin/bash
zxc=(50 30 20 10 40)
#定義陣列并賦值
echo "原陣列的元素順序為:${zxc[*]}"
#輸出現在的陣列元素順序
for ((i=1;i<${#zxc[*]};i++))
#外部回圈,比較輪數為陣列長度減一,即從1開始,小于5次
do
for ((a=0;a<${#zxc[*]}-i;a++))
#內部回圈,比較索引對應元素的范圍
#索引為0時為第一個元素,索引值小于5-i,即5個元素比較4次,
do
if [ ${zxc[$a]} -gt ${zxc[$a+1]} ];then
#若第一個元素大于第二個元素,則
temp=${zxc[$a]}
#將第一個元素的值賦予給新變數temp
zxc[$a]=${zxc[$a+1]}
#將第二個元素的值賦予給第一個元素
zxc[$a+1]=$temp
#將變數的值賦予給第二個元素,從而完成位置交換!
fi
done
done
echo "經過冒泡排序后,陣列順序為:${zxc[*]}"
#輸出結果
③如何實作并發多行程
-
在 shell 腳本之外有一些現成的自動化運維管理工具,比如 ansible,能夠解決并發執行多任務的問題
-
使用后臺執行任務的方式來實作任務的“多行程化”
&:后臺執行 wait:等待前面的后臺任務全部完成才往下執行
④過濾日訪問量最多 ip 來源(前10)
cat xxx | awk '{print$x}' | sort | uniq -c | sort -nr | head -10
'//uniq -c:去重;sort -nr:排序,n表示用數字大小排序,r表示反向排序'
Ⅱ:Linux 系統管理(常用命令)
①系統相關命令
磁盤占用:df -hT
記憶體資訊:cat /proc/meminfo 或 free -m
CPU:cat /proc/cpuinfo
I/O(性能):iostat istop(輸出磁盤IO和CPU的統計資訊)
(yum install sysstat)
ss:獲取socket 統計資訊,與netstat類似
能夠顯示更多更詳細的有關TCP和連接狀態的資訊,比netstat更快速更高效
netstat -nautp | grep [...]
ss -nautp | grep [...] '//可檢測埠占用情況'
iotop:是一個用來監視磁盤I/O使用狀況的 top 類工具
可監測到哪一個程式使用的磁盤IO的資訊(yum -y install iotop)
lsof:用于查看行程打開的檔案,打開檔案的行程,行程打開的埠(TCP/UDP)
是十分方便的系統監視工具,因為lsof命令需要訪問核心記憶體和各種檔案,所以需要root用戶執行
--
查詢日志的一些方法:
cat
vim
systemctl status
journal -u [指定查看服務日志]
journal -xe [查看系統日志]
tail -f [……]
②常用抓包工具
網路就像資料的高速公路:網路到底傳輸什么資料?到底怎么傳輸的?對于正常使用網路的用戶,只關心能不能使用,他們可以不知道其中的原理和程序
但是作為網路工程師就必不可少的得知道期間的原來,以及出現問題的時候知道如何入手,這時候我們就得有一個稱心的工具簡化排障程序
抓包軟體把看不到摸不到的資料包,呈現出來,抓包軟體還對資料包按照層級結構進行劃分,對故障分析和排障帶來極大的便利
wireshark:
- 其是一款小巧、開源、免費且能在幾乎所有流行作業系統上使用的抓包工具軟體,很適合網路工程師進行個人學習、分析、排障使用,本人是在學習使用 eNSP 時接觸到的
- 擁有強大的過濾器,對于需要查看的需求可以精準的捕獲
tcpdump:
- 是一款根據使用者的定義對網路上的資料包進行截獲的包分析工具,可以將網路中傳送的資料包的“頭”完全截獲下來提供分析
- 支持針對網路層、協議、主機、網路或埠的過濾,并提供and、or、not等邏輯陳述句來幫助你去掉無用的資訊
③Linux 系統啟動(引導)程序
系統引導是作業系統運行的開始,在用戶能夠正常登陸到系統之前,Linux 的引導程序完成了一系列的初始化任務,并加載必要的程式和命令終端,為用戶登錄做好準備
- 服務器主機開機后,根據主板 BIOS(基本輸入輸出系統)中的設定檢測出一個能夠引導系統的設備(硬碟或光驅),檢測成功后根據預設的啟動順序移交系統控制權
- (從本機硬碟)啟動系統時,首先根據硬碟第一個扇區中 MBR(主引導記錄)的設定,將系統控制權傳遞給包含作業系統引導檔案的磁區;或者直接根據 MBR 記錄中的引導資訊呼叫啟動選單(如 GRUB)
- GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程式,系統控制權傳遞給 GROB 以后,將會顯示啟動選單給用戶選擇,并根據所選項(或采用默認值)加載 Linux 內核檔案,然后將系統控制權轉交給內核
- Linux 內核是一個預先編譯好的特殊二進制檔案,介于各種硬體資源與系統程式之間,負責資源分配與調度,內核接過系統控制權以后,將完全掌控整個 Linux 作業系統的運行程序
- 為了完成進一步的系統引導程序,Linux 內核首先將系統中的"/sbin/init"程式加載到記憶體中運行(運行中的程式稱為行程),init 行程負責完成整個系統的初始化,最后等待用戶進行登錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272343.html
標籤:其他
