例61 查詢檔案差異
要求:有兩個檔案a.txt和b.txt,需求是吧a.txt中有的但b.txt中沒有的行找出來,並寫入到c.txt,然後計算出c.txt檔案的行數
要點:可以使用while迴圈遍歷a.txt,逐行進行匹配,如果這一行在b.txt中沒有就直接重定向到c.txt中即可
#!/bin/bash
cat a.txt | while read line
doif ! grep -q "$line" b.txt
then
echo $line
fidone >c.txt
wc -l c.txt
例62 殺程序
要求:把當前使用者下所有程序名字衝含有「amingh」的程序關閉
#!/bin/bash
ps -u $user|awk '$nf ~ /aminhg/ ' | xargs kill
例63 迸發備份資料庫
用shell,以併發程序的形式將mysql資料庫所有的表備份到當前目錄,並把所有的表壓縮到乙個壓縮包檔案裡
要點:1.在shell中加上&可以將命令丟到後台,從而可以同時執行多條命令達到併發效果。
2.如果表數量很大,全部丟到後台去,服務資源恐怕支援不了,所以需要控制併發數
3.備份表的命令式mysqlldump -uaming-ppasswd mydb tbname > tbname.sql
#!/bin/bash
n=5mysql -uaming -ppasswd myda -e "show tables" | sed '1d' > /tmp/table.txt
n=`wc -l` /tmp/table.txt | awk ''
div()
n=`echo "scale=1;$1/$2"|bc`
n1=`echo "scale=1;$n+0.5"|bc`
echo $n1 |cut -d -f1
n1=`div $n $n`
split -l $n1 /tmp/table.txt
myd()
for t in `cat $1`
domysqldump -uaming -ppasswd mydb $t >$t.sql
done
for f in xaa xab xac xad xae
domy $f &
done
wait
tar czf mydb.tar.gz *.sql
rm -f *.sql
例64 監控cdn節點
要求: 乙個**,使用率cdn,全國各地有幾十個節點。需要你寫乙個shell指令碼來監控各個節點是否正常。假如1.監控的url為www.aming.com/index.php
2.源ip為88.88.88.88
要點:某個節點正常,那訪問到的內容應該和源站上的一致
比較兩個檔案內容是否有差異的命令為diff,如:diff 1.txt 2.txt如果結果為空,說明兩個檔案不存在差異
3.幾十個節點,需要把所有節點的ip全部拿到,然後對所有ip進行遍歷。
#!/bin/bash
s_ip=88.88.88.88
url=www.aminglinux/index.html
ipf=/data/ip.list
curl -x $s_ip:80 $url 2>/dev/null >/tmp/source.txt
for ip in `cat $ipf`
docurl -x$ip:80 2>/dev/null >/tmp/$ip.txt
diff /tmp/source.txt /tmp/$ip.txt >/tmp/$ip.diff
n=`wc -l /tmp/$ip.diff|awk ''`
if [ $n -gt 0 ]
then
echo "節點$ip有異常"
fidone
例65 破解字串
要求:已知下面的字串是通過random隨機變數md5sum|cut -c 1-8擷取後的結果,請破解這些字串對應的md5前的random對應數字
00205d1c
a3da1677
1f6d12dd
890684ba
要點:$random的範圍為0-32767,想要解此題,需要遍歷0-32767所有的數字,逐一和題目給出的字串匹配
00205d1c
a3da1677
1f6d12dd
890684ba
例66 判斷cpu廠商
要求:1.判斷當前主機的cpu廠商,其資訊在/proc/cpuinfo檔案中vendoe id 一行中
2.如果生產昌盛為authenticamd,就顯示其為amd公司
3.如果其生產廠商為genuineintel,就顯示其為intel公司
4.否則,就說其為非主流公司
要點:擷取:/proc/cpuinfo文件包含「vendor_id」哪行的文字
#!/bin/bash
cpu=`grep '^vendor_id' /proc/cpuiinfo |head -1 |awk -f ':' ''`
if [ $cpu == "authenticamd" ]
then
echo "cpu廠商是amd."
elif [ $cpu == "genuineintel" ]
then
echo "genuineintel"
else
echo "cpu是非主流廠商."
fi
shell訓練計畫30天之第六天
一 什麼是shell 1.shell是一種程式語言 2.shell可以使用邏輯判斷和迴圈等語法 3.shell支援自定義函式 4.shell是系統命令的集合 5.shell指令碼可以實現自動化運維,可以大大增加運維的效率 6.shell其實就是把系統的命令寫進檔案中,有點類似於windows的批處理...
shell訓練計畫30天之第一天
一 什麼是shell 1.是命令直譯器 2.支援特定的語法 邏輯判斷 迴圈 3.每個使用者可以有自己特定的shell 4.centos7預設shell為bash bourne agin shell 5.其他的shell zsh ksh 二 命令歷史 1.按向上方向鍵檢視歷史命令 2.歷史命令檔案存在...
shell訓練計畫30天之第七天
一 if判斷檔案 目錄屬性 f file 判斷是否是普通檔案,且存在 bin bash f tmp aminglinux if f f then echo f exist else touch f fi d file 判斷是否是目錄,且存在 bin bash f tmp aminglinux if ...