Shell練習(七)
阿新 • • 發佈:2018-02-26
linux shell 習題1:統計日誌大小
要求:假如我們需要每小時都去執行你寫的腳本。在腳本中實現這樣的功能,當時間是0點和12點時,需要將目錄/data/log/下的文件全部清空,註意只能清空文件內容而不能刪除文件。而其他時間只需要統計一下每個文件的大小,一個文件一行,輸出到一個按日期和時間為名字的日誌裏。 需要考慮/data/log/目錄下的二級、三級、… 等子目錄裏面的文件
參考答案:
#!/bin/bash # date:2018年2月25日 logdir="/data/log/" t=`date +%H` d=`date +%F-%H` [ -d /tmp/log_size ] || mkdir /tmp/log_size for log in `find $logdir -type f` do if [ $t == "0" ] || [ $t == "12" ] then true > $log else du -sh $log >> /tmp/log_size/$d fi done
習題2:統計常用命令
要求:
寫一個shell腳本來看看你使用最多的命令是哪些,列出你最常用的命令top10。
思路:我們要用到一個文件就是.bash_history,然後再去sort、uniq,剩下的就不用我多說了吧。很簡單一個shell。
參考答案:
#!/bin/bash # date: 2018年2月25日 sort /root/.bash_history|uniq -c|sort -rn|head
習題3:獲取文件列表
要求:
有一臺服務器作為web應用,有一個目錄(/data/web/attachment)不定時地會被用戶上傳新的文件,但是不知道什麽時候會上傳。所以,需要我們每5分鐘做一次檢測是否有新文件生成。
請寫一個shell腳本去完成檢測。檢測完成後若是有新文件,還需要將新文件的列表輸出到一個按年、月、日、時、分為名字的日誌裏。請不要想的太復雜,核心命令只有一個 find /data/web/attachment -mmin -5
思路: 每5分鐘檢測一次,那肯定需要有一個計劃任務,每5分鐘去執行一次。腳本檢測的時候,就是使用find命令查找5分鐘內有過更新的文件,若是有更新,那這個命令會輸出東西,否則是沒有輸出的。固,我們可以把輸出結果的行數作為比較對象,看看它是否大於0
參考答案:
#!/bin/bash # date: 2018年2月25日 d=`date -d "-5 min" +%Y%m%d%H%M` basedir=/data/web/attachment find $basedir -type f -mmin -5 > /tmp/newfile.txt n=`wc -l /tmp/newfile.txt` if [ $n -gt 0 ];then /bin/mv /tmp/newfile.txt /tmp/$d fi
Shell練習(七)