linux var log可以刪掉,“/var/log”是Linux系統(tǒng)登錄文件放置的地方,里面比較重要的文件有“/var/log/messages”、“/var/log/wtmp”等,其他不重要的日志就可以刪除。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
linux var log 可以刪掉嗎?
可以。
var log里就是記錄點(diǎn)日志而已,可以刪除,不過(guò)為了句柄安全,最好刪除后重啟xenserver。
【Shell腳本】清除/var/log下的日志文件
【腳本要求】
-
清除/var/log目錄下/var/log/messages和/var/log/wtmp中的內(nèi)容;
-
該腳本帶一個(gè)參數(shù)用來(lái)設(shè)置保留日志的行數(shù),無(wú)參數(shù)時(shí)時(shí)默認(rèn)保留最后50行,有參數(shù)時(shí)判斷參數(shù)是否是純數(shù)字;
-
只有root身份才能執(zhí)行此腳本,非root用戶執(zhí)行此腳本時(shí),將以error形式退出并返回錯(cuò)誤代碼;
-
判斷是否正確進(jìn)入到/var/log目錄,如果不能進(jìn)入到該目錄,將以error形式退出并返回錯(cuò)誤代碼;
【基礎(chǔ)知識(shí)】
/var/log是Linux系統(tǒng)登錄文件放置的地方。里面比較重要的文件有/var/log/messages,/var/log/wtmp等。
/var/log/messages存放的是系統(tǒng)發(fā)生錯(cuò)誤時(shí)的信息,如果系統(tǒng)發(fā)生莫名其妙的錯(cuò)誤,那么一定要查看此文件。
/var/log/wtmp則記錄了正確登陸過(guò)系統(tǒng)的帳號(hào)信息,對(duì)于追蹤登陸系統(tǒng)者的行為很有幫助。
【知識(shí)點(diǎn)總結(jié)】
1、任何shell腳本第一行都應(yīng)該是以#!開頭。除了腳本第一行的#其它行的#表示腳本的注釋。注釋可以放在命令行的結(jié)尾,也可以另起一行。
2、LOG_DIR、UID_ROOT、LINE、E_XCD、E_NOTROOT、E_WRONGARGS等常量要大寫
3、$UID是當(dāng)前登陸用戶的UID,root用戶的UID為0
4、-nq用于兩個(gè)整數(shù)之間相等的比較
5、判斷式中括號(hào)[]的兩端和需要有空格的地方都有加空格。例如,[空$UID空-nq空$UID_ROOT空]
6、雙引號(hào)””中的特殊符號(hào)保持原有含義,單引號(hào)”中的特殊字符一律看作一般字符。
7、此腳本用到if語(yǔ)句和case語(yǔ)句,注意他們的語(yǔ)法結(jié)構(gòu)。
8、*是通配符,代表任意數(shù)量的任意字符,它也可以用來(lái)匹配給定目錄下任意文件名,在算術(shù)運(yùn)算中代表乘法。
9、[!0-9],[0-9]代表0~9這10個(gè)數(shù)字,!表示取反,這里代表不含有0~9這10個(gè)數(shù)字。
10、||連接兩個(gè)命令時(shí),當(dāng)前面的命令執(zhí)行錯(cuò)誤時(shí)(命令返回碼不為0),才執(zhí)行后面的命令。與此相對(duì)的是&&,&&前面的命令執(zhí)行正確時(shí),才執(zhí)行后面的命令。
11、大括號(hào){}中間的成為代碼塊,其中聲明的變量對(duì)于腳本其他部分代碼來(lái)說(shuō)還是可見(jiàn)的。而小括號(hào)()中生命的變量對(duì)腳本其他部分來(lái)說(shuō)是不可見(jiàn)的,因?yàn)?)中的代碼將作為一個(gè)子Shell來(lái)運(yùn)行。
12、tail命令是輸出文件的后面若干行,語(yǔ)法是tail -n filename表示輸出filename最后面的n行。類似的還有命令head,表示輸出文件的前面若干行,語(yǔ)法是head -n filename表示輸出filename最前面的n行。
13、>&2代表將stdout指定到stderr。其它數(shù)據(jù)流重定向符還有:>代表的數(shù)據(jù)流重定向功能,以覆蓋的方法將stdout指定到文件或者設(shè)備上,>>代表以追加的方法將stdout指定到文件或者設(shè)備上,2>以覆蓋的方法將stderr指定到文件或者設(shè)備上,2>>代表以追加的方法將stderr指定到文件或者設(shè)備上。&>以覆蓋的方法將stdout和stderr指定到文件或者設(shè)備上,&>>代表以追加的方法將stdout和stderr指定到文件或者設(shè)備上。
14、mv命令可以將文件或者目錄移動(dòng)到一個(gè)指定的目錄,帶上參數(shù)-i可以提示目標(biāo)存在時(shí)是否覆蓋;也可以對(duì)文件或者目錄進(jìn)行重命名。
15、/dev/null是一個(gè)垃圾桶黑洞設(shè)備,有非常重要的作用,一是可以產(chǎn)生空白內(nèi)容,另外可以吞噬任何導(dǎo)向這個(gè)設(shè)備的信息。此處是用來(lái)產(chǎn)生空白內(nèi)容。
16、分號(hào)“;”用于將同一行上的多個(gè)命令分隔開來(lái)。
【腳本清單】
#!/bin/bash LOG_DIR=/var/log UID_ROOT=0 LINE=50 E_XCD=66 E_NOTROOT=67 E_WRONGARGS=65 #保證只有root用戶才可以執(zhí)行此腳本 if?[?$UID?-nq?$UID_ROOT?]?;?then ????echo?"This?script.?must?be?run?by?root" ????exit?$E_NOTROOT fi #測(cè)試命令行的參數(shù) case?$1?in ????"?"?????)lines=$LINE;; ????*[!0-9]*)echo?"Usage:?`basename?$0`?file-to-cleanup";exit?$E_WRONGARGS;; ????*???????)lines=$1;; esac #處理log之前,再次確認(rèn)當(dāng)前目錄是否正確 cd?&LOG_DIR?||?{ ????echo?"Cannot?change?to?&LOG_DIR"?>&2 ????exit?$E_XCD } #處理log tail?-$lines?messages>mesg.temp mv?mesg.temp?messages cat?/dev/null?>?wtmp #處理完畢 echo?"Logs?cleaned?up?" exit?0
希望大家看過(guò)后,能給提出意見(jiàn)和建議,相信通過(guò)交流我們提高的更快。
相關(guān)推薦:《Linux視頻教程》