版權聲明: 本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。 QQ:1151887353 E-mail:[email protected] [email protected] ################################################# ...
版權聲明:
本文的所有內容均來自作者劉春凱的學習總結,未經本人許可,禁止私自轉發及使用。
QQ:1151887353
E-mail:[email protected] [email protected]
##########################################################################
1.創建一個目錄/data。
解答:
mkdir /data
2.在/data下麵建立一個文件oldboy.txt。
解答:
touch /data/oldboy.txt
或者:
cd /data
touch oldboy.txt
3.為oldboy.txt增加內容為“I am studying linux.”。
解答:
法一:
cd /data
echo "I am studying linux">>oldboy.txt
法二:
vi/vim --a/i--" I am studying linux "--esc--:qw
法三:
cat >>oldboy.txt
> I am studying linux
crul+c
4.把oldboy.txt文件拷貝到/tmp下。
解答:
cd /data
cp oldboy.txt /tmp/
5.把/data目錄移動到/root下。
解答:
mv /data /root/
6.進入/root目錄下的data目錄,刪除oldboy.txt文件。
解答:
cd -
cd data
rm -f oldboy.txt
7.接第6題,退出到上一級目錄,刪除data目錄。
解答:
cd -
rm -fr data
8.已知文件test.txt內容為:
test
liyao
oldboy
請給出輸出test.txt文件內容時,不包含oldboy字元串的命令。
解答:
模擬環境
cd /data
touch test.txt
cat >>/test.txt<<EOF(echo或者vi/vim)
test
liyao
oldboy
EOF
ctrl+c
法一:
head -n 2 /data/test.txt
法二:
tail -n 3 test.txt|head -n 2或者head -n 2 test.txt|tail -2
法三:
sed -n "1,2p" test.txt
法四:
grep -v oldboy test.txt或者grep test liyao test.txt
法五:
awk 'NR<3&&NR>0' test.txt或者awk '{if(NR<3&&NR>0) print $0"\n"}' test.txt
法六:
grep 2 -A 1 test.txt
grep 1 -B 1 test.txt
9.請用一條命令完成創建目錄/oldboy/test,即創建/oldboy目錄及/oldboy/test目錄
解答:
cd ~
mkdir -p /oldboy/test
10.已知/tmp下已經存在test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而讓系統不提示是否覆蓋(root許可權下)。
解答:
法一:
/bin/cp /mnt/test.txt /tmp/
法二:
\cp /mnt/test.txt /tmp/
法三:
alias cp
unalias cp
cp /mnt/test.txt /tmp/
11.只查看ett.txt文件(共100行)內第20到第30行的內容
解答:
法一:
head -30 ett.txt|tail -11或者tail -81 ett.txt|head -11
法二:
sed -n '20,30p' ett.txt
法三:
grep 30 -A 10 ett.txt
grep 20 -B 10 ett.txt
grep 25 -C 5 ett.txt
法四:
awk 'NR>19&&NR<31' ett.txt
awk '{if(NR>19&&NR<31) print$0"\n"}' ett.txt
12.分析圖片服務日誌,把日誌(每個圖片訪問次數*圖片大小的總和)排行,取top10,也就是計算每個url的總訪問大小
【附加題:工作場景高難度加分題,不會的同學可以放棄不答】。
說明:本題生產環境應用:這個功能可以用於IDC網站流量帶寬很高,然後通過分析伺服器日誌哪些元素占用流量過大,進而進行優化或裁剪該圖片,壓縮js等措施。
本題需要輸出三個指標: 【訪問次數】 【訪問次數*單個文件大小】 【文件名(可以帶URL)】
測試數據
59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299 "http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299 "http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
59.33.26.105 - - [08/Dec/2010:15:44:02 +0800] "GET /static/flex/vedioLoading.swf HTTP/1.1" 200 3583 "http://oldboy.blog.51cto.com/static/flex/AdobeVideoPlayer.swf?width=590&height=328&url=/[[DYNAMIC]]/2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
124.115.4.18 - - [08/Dec/2010:15:44:15 +0800] "GET /?= HTTP/1.1" 200 46232 "-" "-"
124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/web_js.js HTTP/1.1" 200 4460 "-" "-"
124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/jquery.lazyload.js HTTP/1.1" 200 1627 "-" "-"
解答:模擬環境
cd /var/log
touch access.log 1.log 2.log
vim access.log(添加內容,生成日誌)
法一:通過兩個數組來計算(用到數組累加和去重)
因為我們要的最終結果是某個文件的訪問次數和消耗的流量,所以考慮建立以文件名為索引的兩個數組,一個存儲訪問次數,一個保存消耗的流量,這樣當使用awk按行遍歷文件時,對次數數組+1,同時對流量數組進行文件大小的累加,等文件掃描完成,再遍歷輸出兩個數組既可以得到該文件的反問次數和總的流量消耗。
awk '{array_num[$7]++;array_size[$7]+=$10}END{for(x in array_num){print array_size[x],array_num[x],x}}' access.log|sort -rn -k1|head -10 >1.log
cat 1.log
46232 1 /?=
22598 2 /static/images/photos/2.jpg
4460 1 /static/js/web_js.js
3583 1 /static/flex/vedioLoading.swf
1627 1 /static/js/jquery.lazyload.js
法二:
awk '{print $7"\t" $10}' access.log|awk '{S[$1]+=$2;S1[$1]+=1}END{for(i in S) print S[i],S1[i],i}'|sort -rn|head -10 >2.log
cat 2.log
46232 1 /?=
22598 2 /static/images/photos/2.jpg
4460 1 /static/js/web_js.js
3583 1 /static/flex/vedioLoading.swf
1627 1 /static/js/jquery.lazyload.js
13、把/oldboy目錄及其子目錄下所有以擴展名.sh結尾的文件中包含oldboy的字元串全部替換為oldgirl【附加題:加分題,不會的同學可以放棄不答】。
解答:
模擬環境:
mkdir -p /oldboy/test
touch a.txt /oldboy
touch b.txt /oldboy/test
echo "oldboy" >a.sh
echo "oldgirl" >b.sh
法一:sed
sed -i "s#oldboy#oldgirl#g" /oldboy/*.txt
sed -i "s#oldboy#oldgirl#g" `find/oldboy/ -type f -name "*.sh"`
sed -i "s#oldboy#oldgirl#g" $(fing/oldboy/ -type f -name "*.sh")
法二:find+|xargs
find /oldboy/ -type f -name "*.sh" |xargs sed -i "s#oldboy#oldgirl#g"
find /oldboy/ -type f -name "*.sh" -exec sed -i "s#oldboy#oldgirl#g {} \;
法三:for語句
for i in `ll /oldboy | grep .sh|awk '{print $NF}'`
do
sed -i 's#oldboy#oldgirlg'$i
done