具體如下:
創(chuàng)新互聯(lián)是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營銷人員及形象策劃。承接:網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站改版、網(wǎng)頁設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫開發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務(wù)。
1.首先為了演示應(yīng)用程序輸出信息,這里我們選擇tomcat的日志輸出文件來演示,當(dāng)然也可以選擇您自己任意的應(yīng)用程序。這里我們連接上linux服務(wù)器之后,cd命令切換到tomcat的logs目錄
2.要想自動(dòng)打印顯示出程序輸出信息,這里需要使用到tail命令,首先我們使用mantail命令查看下tail命令的幫助信息。tail命令是默認(rèn)打印最后10行信息,從幫助信息中,可以看到-f跟隨的意思,就是在有新的輸出信息的...
3.輸入tail-fcatalina.out,從打印信息中可以看出,默認(rèn)輸出了最后的10行信息,并且命令沒有退出,等待新的信息輸出,這個(gè)時(shí)候如果程序有新的輸出,會(huì)自動(dòng)打印出來
4.tail命令默認(rèn)一開始是顯示之前的10行,如果不夠的話,可以指定,這里可以輸入tail-40fcatalina.out
很多情況下我們需要記錄用戶執(zhí)行過的命令,不管是root還是其他普通用戶,我們可以通過以下方式來記錄。
PROMPT_COMMAND會(huì)在命令執(zhí)行前執(zhí)行。
$(who am i |awk '{print \$2,\$5}') 會(huì)輸出登錄用戶用的tty和登錄服務(wù)器的遠(yuǎn)程電腦IP或者主機(jī)名。
$PWD 是內(nèi)建變量,顯示當(dāng)前執(zhí)行命令的工作目錄。
history 1 | { read x cmd; echo ${cmd}; 會(huì)輸出最后一條歷史命令中的執(zhí)行信息。
為了不讓用戶修改變量,使用 declare -rx 命令定義了只讀環(huán)境變量。這里要注意使用 readonly 命令也可以定義只讀變量,但是用戶用env命令看不到,只有用 export PROMPT_COMMAND 命令將變量設(shè)置為環(huán)境變量后才能看到。
變量加到 /etc/bashrc 是因?yàn)橛脩舻卿浐髸?huì)加載這里的配置,包括 sudo sudo su sudo su - su root su - root 。如果加到其他文件里則部分命令后就不會(huì)加載變量,自行嘗試。
修改rsyslog是可以自定義日志輸出的文件路徑和名字,用 logger -p 這個(gè)命令配合使用。
新增logrotate配置則是需要切割日志,防止單個(gè)日志文件太大,以及做好切割備份,方便查詢。
【一】
在 /etc/profile 最后添加如下行,則日志會(huì)直接輸出到 messages 日志里。
這種方式:不定義日志格式,直接將日志寫到messages日志文件里,和其他日志放一起,但是可以指定日志標(biāo)簽,方便檢索。
缺點(diǎn)是(1)會(huì)導(dǎo)致日志增大,并且用戶提權(quán)后因-t標(biāo)簽的存在,導(dǎo)致不會(huì)記錄提權(quán)前的用戶。(2)不能自定義日志路徑。
【二】
缺點(diǎn):用戶可以刪除日志文件。
因?yàn)槠胀ㄓ脩艉蛂oot都要往日志文件里寫,所以需要給普通用戶加一個(gè)附加組;并且如果日志文件不存在,普通用戶登錄后也需要新建,所以普通用戶必須有日志文件父目錄的寫權(quán)限。為了能讓所有普通用戶都可以寫,就給Command目錄加了SGID權(quán)限以及修改目錄屬組為audit。這樣普通用戶在這個(gè)目錄下創(chuàng)建的日志文件的屬組會(huì)自動(dòng)繼承Command目錄的屬組,也就是audit。 (umask 002 touch $HISTORY_FILE) 命令則是因?yàn)閞oot用戶生成的日志文件權(quán)限是644,屬組沒有寫權(quán)限。所以這里用 啟動(dòng)子shell并修改umask的方式生成日志文件。這樣就不會(huì)修改root默認(rèn)的 0022 的umask。
其他審計(jì)軟件:
免費(fèi)2個(gè)月
last
-a 把從何處登入系統(tǒng)的主機(jī)名稱或ip地址,顯示在最后一行。
-d 指定記錄文件。指定記錄文件。將IP地址轉(zhuǎn)換成主機(jī)名稱。
-f 記錄文件 指定記錄文件。
-n 顯示列數(shù)或-顯示列數(shù) 設(shè)置列出名單的顯示列數(shù)。
-R 不顯示登入系統(tǒng)的主機(jī)名稱或IP地址。
-x 顯示系統(tǒng)關(guān)機(jī),重新開機(jī),以及執(zhí)行等級的改變等信息
以下看所有的重啟、關(guān)機(jī)記錄
last | grep reboot
last | grep shutdown
history
列出所有的歷史記錄:
[zzs@Linux] # history
只列出最近10條記錄:
[zzs@linux] # history 10 (注,history和10中間有空格)
使用命令記錄號碼執(zhí)行命令,執(zhí)行歷史清單中的第99條命令
[zzs@linux] #!99 (!和99中間沒有空格)
重復(fù)執(zhí)行上一個(gè)命令
[zzs@linux] #!!
執(zhí)行最后一次以rpm開頭的'命令(!? ?代表的是字符串,這個(gè)String可以隨便輸,Shell會(huì)從最后一條歷史命令向前搜索,最先匹配的一條命令將會(huì)得到執(zhí)行。)
[zzs@linux] #!rpm
逐屏列出所有的歷史記錄:
[zzs@linux]# history | more
立即清空history當(dāng)前所有歷史命令的記錄
[zzs@linux] #history -c
cat, tail 和 watch
系統(tǒng)所有的日志都在 /var/log 下面自己看(具體用途可以自己查,附錄列出一些常用的日志)
cat /var/log/syslog 等
cat /var/log/*.log
tail -f
如果日志在更新,如何實(shí)時(shí)查看 tail -f /var/log/messages
還可以使用 watch -d -n 1 cat /var/log/messages
-d表示高亮不同的地方,-n表示多少秒刷新一次。
該指令,不會(huì)直接返回命令行,而是實(shí)時(shí)打印日志文件中新增加的內(nèi)容,
這一特性,對于查看日志是非常有效的。如果想終止輸出,按 Ctrl+C 即可。
除此之外還有more, less ,dmesg|more,這里就不作一一列舉了,因?yàn)槊钐嗔?關(guān)鍵看個(gè)人喜好和業(yè)務(wù)需求.個(gè)人常用的就是以上那些
linux日志文件說明
/var/log/message 系統(tǒng)啟動(dòng)后的信息和錯(cuò)誤日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 與安全相關(guān)的日志信息
/var/log/maillog 與郵件相關(guān)的日志信息
/var/log/cron 與定時(shí)任務(wù)相關(guān)的日志信息
/var/log/spooler 與UUCP和news設(shè)備相關(guān)的日志信息
/var/log/boot.log 守護(hù)進(jìn)程啟動(dòng)和停止相關(guān)的日志消息
/var/log/wtmp 該日志文件永久記錄每個(gè)用戶登錄、注銷及系統(tǒng)的啟動(dòng)、停機(jī)的事件
啟動(dòng)之后,會(huì)在jar所在目錄生成一個(gè)nuhup.log日志文件,記錄控制臺的日志輸出。
備注:主要看符號兩邊: "" 對應(yīng)輸出什么和輸出到哪里;
輸出分為標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出,標(biāo)準(zhǔn)輸出就是全輸出,輸出控制臺信息;錯(cuò)誤輸出只是輸出錯(cuò)誤日志信息;
因此上面我們執(zhí)行的 ***.jar nohup.log 21命令,可以拆解成 nohup.log 和 2 1兩個(gè)輸出,只看符號“”左邊輸出部分,分別代表默認(rèn)標(biāo)準(zhǔn)輸出到一個(gè)地方,然后錯(cuò)誤日志輸出到另一個(gè)地方,咱們后面再講輸出到什么地方。
輸出到哪,分為輸出到指定路徑日志文件和重定向位置。
1.指定路徑:如下: /data/work/log.log 這樣便是指定輸出到路徑/data/work/log.log文件。
Linux上有一個(gè)特例路徑/dev/null ,這路徑就好像永久刪除的回收站,當(dāng)我們不需要輸出任何信息時(shí),就可以將輸出指向/dev/null,那就不會(huì)有任何輸出文件。
2.至于重定向,就是將文件重定向到一個(gè)地址,如下:
1 重定向到標(biāo)準(zhǔn)輸出的地址,啥意思,就是輸出到已指定的標(biāo)準(zhǔn)輸出的地址。
2 重定向到錯(cuò)誤輸出的地址,就是輸出到已指定的錯(cuò)誤輸出的地址。
比如nohup.log 21 ,意思是前面默認(rèn)標(biāo)準(zhǔn)輸出到了nohup.log日志下,后面錯(cuò)誤輸出也指向標(biāo)準(zhǔn)輸出的地址,也即nohup.log日志下。
命令后面加的 ,可讓命令在后臺執(zhí)行,否則關(guān)閉會(huì)話會(huì)停止程序。
(1)nohup java -jar ***.jar /data/log.log 2/data/err.log
解釋:標(biāo)準(zhǔn)日志輸出到/data/log.log文件,錯(cuò)誤日志輸出到/data/err.log文件。
(2)nohup java -jar ***.jar /data/log.log 21
解釋:標(biāo)準(zhǔn)日志輸出到/data/log.log文件,錯(cuò)誤日志重定向也輸出到/data/log.log文件。
(3)nohup java -jar ***.jar /dev/null 2/data/err.log
解釋:標(biāo)準(zhǔn)日志輸出到/dev/null,也就是不輸出標(biāo)準(zhǔn)日志,錯(cuò)誤日志輸出到/data/err.log文件。
一般采用上面(3)只輸出錯(cuò)誤日志就可以了,有需要的按照(1)進(jìn)行輸出。
Linux查看日志的命令有很多,比如tail、cat、tac、head、echo等,今天給大家介紹幾種常用的方法:
1、tail-實(shí)時(shí)查看變化的日志
命令格式:tail [必要參數(shù)][選擇參數(shù)][文件]
-f:循環(huán)讀取
-q:不顯示處理信息
-v:顯示詳細(xì)的處理信息
-c數(shù)目:顯示的字節(jié)數(shù)
-n行數(shù):顯示行數(shù)
-q, --quiet, --silent:從不輸出給出文件名的首部
-s, --sleep-interval=S:與-f合用,表示在每次反復(fù)的間隔休眠S秒
2、head
跟tail相反,head是看日志的前多少行
head -n 10 test.log:查詢?nèi)罩疚募械那?0行日志;
head -n -10 test.log:查詢?nèi)罩疚募俗詈?0行的其他所有日志;
3、cat-搜索關(guān)鍵字附近的日志
cat是由第一行到最后一行連續(xù)顯示在屏幕上
最常用的命令:cat -n filename | grep "關(guān)鍵字"
cat app.log | grep -C 5 '關(guān)鍵字':顯示日志里匹配字串那行以及前后5行;
cat app.log | grep -B 5 '關(guān)鍵字':顯示匹配字串及前5行;
cat app.log | grep -A 5 '關(guān)鍵字':顯示匹配字串及后5行;
4、more
more命令是一個(gè)基于vi編輯器文本過濾器,它以全屏幕的方式按頁顯示文本文件的內(nèi)容,支持vi中的關(guān)鍵字定位操作。
more的語法:more 文件名