2019-03-22 11:04:18 2353瀏覽
本篇文章扣丁學(xué)堂Linux培訓(xùn)小編給大家分享一下shell日志顏色處理及清理系統(tǒng)日志的方法,對Linux開發(fā)感興趣或者是想要加入Linux開發(fā)領(lǐng)域中的小伙伴就隨小編一起來了解一下吧。
記錄一下shell日志顏色處理:
_COLORS=${BS_COLORS:-$(tput colors 2>/dev/null || echo 0)} __detect_color_support() { # shellcheck disable=SC2181 if [ $? -eq 0 ] && [ "$_COLORS" -gt 2 ]; then RC='\033[1;31m' GC='\033[1;32m' BC='\033[1;34m' YC='\033[1;33m' EC='\033[0m' else RC="" GC="" BC="" YC="" EC="" fi } __detect_color_support echoerror() { printf "${RC} * ERROR${EC}: %s\\n" "$@" 1>&2; } echoinfo() { printf "${GC} * INFO${EC}: %s\\n" "$@"; } echowarn() { printf "${YC} * WARN${EC}: %s\\n" "$@"; }
下面看下shell清理系統(tǒng)日志
1、設(shè)置日志峰值,到達(dá)則刪除
2、定時檢測,crontab添加定時任務(wù)
3、后臺掛載 : ./xx.sh &
工作腳本:
#! /bin/sh #日志目錄及限定大小 workdir="/var/*.log" maxsize=100 #搜索最老文件,不加目錄默認(rèn)的本目錄里邊的文件 r倒序輸出 t時間 head -n1取第一行 awk命令括號$1位文件名 管道連接 oldfile(){ oldfile=`ls $workdir -t 2>/dev/null| head -n1 | awk '{printf $1}'` } clear_old_log(){ if [ ! $oldfile ] then #echo "日志不存在" 1>/dev/null return 0 fi while true; do oldfile if [ ! $oldfile ] then return 0 fi logsize=`du -ms $oldfile 2>/dev/null| awk '{printf $1}'` #m表示兆 k b if [ $logsize -gt $maxsize ] then str1="log" str2="err" if [[ $oldfile == *$str1* ]] then pkill snake rm -rf $oldfile fi if [[ $oldfile == *$str2* ]] then service mysql restart pkill snake rm -rf $oldfile fi else break fi done } testing(){ while true; do workdir="/var/*.log" oldfile clear_old_log workdir="/var/lib/mysql/*.err" oldfile clear_old_log done } testing 定時任務(wù)腳本: #! /bin/sh #a=`pgrep -f test1.sh|wc -l` #if [ $(ps -ef|grep test.sh|wc -l) -gt 1 ] if test $(pgrep -f test.sh|wc -l) -ge 1 then exit fi cd /home/zxd/ ./test.sh 下邊這個帶有日志時間加時間戳及系統(tǒng)負(fù)載檢測: #! /bin/bash strA="long string" strB="string" result=$(echo $strA | grep "${strB}") if [[ "$result" != "" ]] then echo "包含" else echo "不包含" fi #日志目錄及限定大小 workdir="/var/*.log" maxsize=100 #給文件加時間戳:函數(shù)里的變量必須在腳本函數(shù)后邊跟著,這里$1不是命令行跟的參數(shù),命令行的參數(shù)為腳本的$1 filetime(){ a=$(date +%Y%m%d%H%M%S) A=$1.$(date +%Y%m%d%H%M%S) echo $A } filetime "/var/log" #搜索最老文件,不加目錄默認(rèn)的本目錄里邊的文件 r倒序輸出 t時間 head -n1取第一行 awk命令括號$1位文件名 管道連接 oldfile(){ oldfile=`ls $workdir -rt 2>/dev/null| head -n1 | awk '{printf $1}'` } clear_old_log(){ if [ ! $oldfile ] then echo "日志不存在" 1>/dev/null return 0 fi while true; do oldfile if [ ! $oldfile ] then echo "日志不存在" 1>/dev/null return 0 fi logsize=`du -bs $oldfile 2>/dev/null| awk '{printf $1}'` if [ $logsize -gt $maxsize ] then str1="log" str2="err" if [[ $oldfile == *$str1* ]] then pkill snake rm -rf $oldfile fi if [[ $oldfile == *$str2* ]] then service mysql restart pkill snake rm -rf $oldfile fi else break fi done } testing(){ echo "run" while true; do oldfile clear_old_log echo "222" workdir="/var/lib/mysql/libmaster.err" oldfile clear_old_log done } disk=`df |grep /dev/mapper/fedora-root | awk '{printf $5}' | sed 's/%//g'` echo "磁盤已用:%$disk" memtotal=`cat /proc/meminfo |grep MemTotal |awk '{printf $2}'` memfree=`cat /proc/meminfo |grep MemFree |awk '{printf $2}'` used=$((100- memfree*100/memtotal)) echo "內(nèi)存已用:%$used" echo "exit" testing
最后想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時俱進(jìn)的Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的同學(xué)請加入扣丁學(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】