shell訓練計畫30天之第二十四天

2021-09-27 04:09:54 字數 2738 閱讀 2015

例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 ...