计划任务以及日志管理
計(jì)劃任務(wù)以及日志管理
1、計(jì)劃任務(wù)
簡(jiǎn)單介紹:
計(jì)劃任務(wù):就是在計(jì)劃內(nèi)的任務(wù),比如說(shuō)什么時(shí)候做什么樣的意見事情;就是提前就已經(jīng)是規(guī)劃好了,在Linux的世界面也會(huì)存在這種計(jì)劃性的任務(wù),而且,在Linux系統(tǒng)中在創(chuàng)建的時(shí)候就已經(jīng)默認(rèn)了很多的計(jì)劃任務(wù),僅僅是我們不知道而已;屬實(shí)打臉,學(xué)習(xí)統(tǒng)居然還不知道系統(tǒng)是如何的?扯遠(yuǎn)了,那么在Linux系統(tǒng)中,通常使用兩個(gè)服務(wù)器來(lái)實(shí)現(xiàn)計(jì)劃性的任務(wù)
- atd:一次性計(jì)劃任務(wù)
- crond:周期性計(jì)劃任務(wù)
簡(jiǎn)單的理解就是計(jì)劃性任務(wù)就是做一些周期性的工作內(nèi)容,比如說(shuō)是備份,又比如說(shuō)切割系統(tǒng)日志等等;
crond:守護(hù)進(jìn)程是為了周期性執(zhí)行任務(wù)或者是出出力等待處理事件;
任務(wù)的調(diào)度:可以是系統(tǒng)自帶的,也可以是人為的;簡(jiǎn)單的說(shuō)就是系統(tǒng)任務(wù)調(diào)度、用戶任務(wù)調(diào)度;
計(jì)劃性任務(wù)的實(shí)現(xiàn)方式:
- 定時(shí)性的計(jì)劃任務(wù):就是按照一定周期執(zhí)行的
- 突發(fā)性的計(jì)劃任務(wù),臨時(shí)安排的,臨時(shí)設(shè)置的計(jì)劃性任務(wù);
at一次性計(jì)劃任務(wù)
at計(jì)劃性任務(wù):它是僅僅使用一次,用于突發(fā)的,突然想定時(shí)執(zhí)行的一次任務(wù)調(diào)度的工具;
at計(jì)劃是由atd這個(gè)服務(wù)管理;
at命令
作用:指定一次性計(jì)劃任務(wù)
語(yǔ)法:at+時(shí)間
服務(wù)名:atd
選項(xiàng):
- -l:查看at的任務(wù)列表
- atq:查看任務(wù)列表
- -c:查看具體的任務(wù)內(nèi)容
- -u:指定at命令的用戶
- atrm:刪除任務(wù)
at指定計(jì)劃任務(wù)
- 確定系統(tǒng)時(shí)間
- 指定在當(dāng)天晚上8:00執(zhí)行查看命令
如果真在執(zhí)行命令:ctrl+d,但是錯(cuò)誤的按到了ctrl+s,應(yīng)該如何處理?
#在linux的世界里面,錯(cuò)誤的按了ctrl+s表示的是鎖定屏幕的意思,如果按了不能正常的輸入, #需要使用ctrl+q來(lái)退出如果說(shuō)有人設(shè)置了計(jì)劃任務(wù),通常的情況下會(huì)保存到/var/spool/at/的目錄下
通過(guò)-c可以直接查看任務(wù)的命令
[root@node0 ~]# ls /var/spool/at/ a00002019f1e50 spool 您在 /var/spool/mail/root 中有郵件at任務(wù)的幾種寫法:
[root@node0 ~]# at 21:00 2021-09-30 #定義具體的某一天什么時(shí)候執(zhí)行 [root@node0 ~]# at now +10min #從現(xiàn)在開始十分后執(zhí)行 [root@node0 ~]# at 16:00 tomorrow #指定明天的16點(diǎn)開始執(zhí)行 [root@node0 ~]# at 16:00 +3days #指定三天后的幾點(diǎn)執(zhí)行 [root@node0 ~]# at 16:00 < a.txt#刪除任務(wù) [root@node0 ~]# atrm 2 [root@node0 ~]# atq 3 Thu Sep 30 21:00:00 2021 a rootcrontab定時(shí)任務(wù)
crond命令是定時(shí)檢查是否有需要執(zhí)行的工作,如果有周期性的工作就會(huì)自動(dòng)執(zhí)行該工作;
cron是Linux下的定時(shí)執(zhí)行工具,無(wú)需人工干預(yù)操作
系統(tǒng)常見的周期性工作:
更新whatis數(shù)據(jù)庫(kù)、updatedb數(shù)據(jù)庫(kù)、日志定期切割等等
#crond服務(wù) [root@node0 ~]# systemctl status crond #查看是否有開啟crond #設(shè)置開機(jī)自啟動(dòng) [root@node0 ~]# systemctl enable crondcrontab命令
作用:指定定制任務(wù)
語(yǔ)法:crontab+選項(xiàng)
選項(xiàng)
- -u:指定用戶使用cron服務(wù)
- -l:查看當(dāng)前用戶下的cron任務(wù)
- -r:刪除cron任務(wù)
- -e:編輯cron任務(wù)–>這個(gè)是常用選項(xiàng)
crontab的編寫的語(yǔ)法格式
[root@node0 ~]# crontab -e no crontab for root - using an empty one * * * * * command#使用方法說(shuō)明 分、時(shí)、日、月、周+命令 分:0-59 時(shí):0-23 日:1-31 月:1-12 周:1-7 命令:shell命令#特殊字符的含義 * 代表取值范圍內(nèi)的數(shù)字 (任意/每) / 指定時(shí)間的間隔頻率 */10 0-23/2 - 代表從某個(gè)數(shù)字到某個(gè)數(shù)字 8-17 , 分開幾個(gè)離散的數(shù)字 6,10-13,20cron計(jì)劃任務(wù)案例
每天凌晨2點(diǎn)開始備份數(shù)據(jù)
[root@node0 ~]# crontab -e no crontab for root - using an empty one * 2 * * * tar -zcvf /opt/grub2.tar.gz /boot/grub2#查看一下計(jì)劃任務(wù) [root@node0 ~]# crontab -l * 2 * * * tar -zcvf /opt/grub2.tar.gz /boot/grub2指定用戶執(zhí)行計(jì)劃性任務(wù)
[root@node0 ~]# crontab -u bin -e no crontab for bin - using an empty one 2 * 2 * * echo "haha" >> /opt/a.txt#查看指定用戶 [root@node0 ~]# crontab -l -u bin 2 * 2 * * echo "haha" >> /opt/a.txt我們應(yīng)該如何排查所有用戶的計(jì)劃性任務(wù)?
- 首先我們必須理解:所有用戶的計(jì)劃任務(wù)都會(huì)在/var/spool/cron/下產(chǎn)生對(duì)應(yīng)的文件;因此查看這個(gè)目錄下的文件數(shù)就是對(duì)應(yīng)的文件列表
系統(tǒng)級(jí)別的計(jì)劃性任務(wù)
系統(tǒng)中有默認(rèn)的計(jì)劃任務(wù)列表,因此我們需要知道大概的系統(tǒng)任務(wù)調(diào)度的配置文件
#/etc/crontab這個(gè)文件定義了crontab的用法 [root@node0 ~]# ll /etc/crontab -rw-r--r--. 1 root root 451 6月 10 2014 /etc/crontab [root@node0 ~]# vim /etc/crontab SHELL=/bin/bash #定義了操作系統(tǒng)使用的shell PATH=/sbin:/bin:/usr/sbin:/usr/bin #命令的路徑 MAILTO=root #郵件發(fā)送的用戶# For details see man 4 crontabs# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed#定義的計(jì)劃任務(wù)可以寫入此配置文件; #使用crontab命令的注意事項(xiàng)注意的是變量問(wèn)題定時(shí)清理郵件日志,使用重定向到>/dev/null 2>&1那么系統(tǒng)定義了哪些的計(jì)劃性任務(wù)?
[root@node0 ~]# ls /etc/cron #這里按兩下tab鍵 cron.d/ cron.deny cron.monthly/ cron.weekly/ cron.daily/ cron.hourly/ crontab [root@node0 ~]# ls -ld /etc/cron* drwxr-xr-x. 2 root root 21 8月 27 23:31 /etc/cron.d #這里定義的是系統(tǒng)自動(dòng)定期需要執(zhí)行的任務(wù),但是又不是按小時(shí),按天,按星期,按月來(lái)執(zhí)行的,那么就放在這個(gè)目錄下面。 drwxr-xr-x. 2 root root 42 8月 27 23:32 /etc/cron.daily #每天執(zhí)行的腳本; -rw-------. 1 root root 0 4月 11 2018 /etc/cron.deny #控制用戶是否能做計(jì)劃任務(wù)的文件; drwxr-xr-x. 2 root root 22 8月 27 23:31 /etc/cron.hourly #每小時(shí)執(zhí)行的腳本; drwxr-xr-x. 2 root root 6 6月 10 2014 /etc/cron.monthly #每月執(zhí)行的腳本; -rw-r--r--. 1 root root 451 6月 10 2014 /etc/crontab #主配置文件 也可添加任務(wù); drwxr-xr-x. 2 root root 6 6月 10 2014 /etc/cron.weekly #每周執(zhí)行的腳本;計(jì)劃任務(wù)的作業(yè)
每天晚上21:00 重啟apache0 21 * * * /etc/init.d/httpd restart 每月1、10、22日的4 : 45重啟apache。45 4 1,10,22 * * /etc/init.d/httpd restart 每月1到10日的4 : 45重啟apache。45 4 1-10 * * /etc/init.d/httpd restart 每隔兩天的上午8點(diǎn)到11點(diǎn)的第3和第15分鐘重啟apach3,15 8-11 */2 * * /etc/init.d/httpd restart 晚上11點(diǎn)到早上7點(diǎn)之間,每隔一小時(shí)重啟apach0 23-7/1 * * * /etc/init.d/apach restart 周一到周五每天晚上 21:15 寄一封信給 root@panda:15 21 * * 1-5 mail -s "hi" root@panda < /etc/fstab問(wèn)題:
計(jì)劃任務(wù)中是沒(méi)有秒的,如果需要按照每2秒執(zhí)行一次命令該如何實(shí)現(xiàn)?
在腳本的死循環(huán)中,添加命令 sleep 2 ,執(zhí)行30次自動(dòng)退出,然后添加,計(jì)劃任務(wù):* * * * * /back.sh 案例要求:每天2:00備份/etc/目錄到/tmp/backup下面將備份命令寫入一個(gè)腳本中每天備份文件名要求格式: 2017-08-19_etc.tar.gz在執(zhí)行計(jì)劃任務(wù)時(shí),不要輸出任務(wù)信息存放備份內(nèi)容的目錄要求只保留三天的數(shù)據(jù)操作: vim a.sh#!/bin/bashmkdir -p /tmp/backuptar -zcf etc.tar.gz /etc#find /tmp/backup -name "*.tar.gz" -mtime +3 -exec rm -rf {}\;find /tmp/backup -name "*.tar.gz" -mtime +3 |xargs rm -rf crontab -e0 2 * * * /bin/bash a.sh這里需要注意的一個(gè)點(diǎn)就是不要把所有的信息放入/tmp目錄,因?yàn)橛?jì)劃任務(wù)中會(huì)定時(shí)清理/tmp目錄下的內(nèi)容;2、日志管理
在centos7中,系統(tǒng)日志消息由兩個(gè)服務(wù)負(fù)責(zé)處理的,一個(gè)是systemd-journald和rsyslog
常見的日志文件
通常系統(tǒng)日志文件都會(huì)放到/var/log目錄下,并且是有rsyslog維護(hù)與管理,
[root@node0 ~]# ll /var/log/ #取幾個(gè)重要的進(jìn)行分析 /var/log/message #大多數(shù)系統(tǒng)日志消息記錄在此處。有也例外的:如與身份驗(yàn)證,電子郵件處理相關(guān)的定期作業(yè)任務(wù)等 /var/log/secure #安全和身份驗(yàn)證相關(guān)的消息和登錄失敗的日志文件。 ssh遠(yuǎn)程連接產(chǎn)生的日志 /var/log/maillog #與郵件服務(wù)器相關(guān)的消息日志文件 /var/log/cron #與定期執(zhí)行任務(wù)相關(guān)的日志文件 /var/log/boot.log #與系統(tǒng)啟動(dòng)相關(guān)的消息記錄 /var/log/dmesg #與系統(tǒng)啟動(dòng)相關(guān)的消息記錄案例:
查看那個(gè)ip經(jīng)常暴力破解系統(tǒng)用戶密碼
#啟動(dòng)一臺(tái)設(shè)備,并且多次輸入錯(cuò)得密碼來(lái)登陸130服務(wù)器 [root@Node1 ~]# ssh root@192.168.75.130 Permission denied, please try again. root@192.168.75.130's password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). [root@node1 ~]# #在130的服務(wù)器就從secure的文件中能夠查看到 [root@node0 ~]# grep Fail /var/log/secure Sep 25 11:34:24 node0 sshd[7487]: Failed password for root from 192.168.75.131 port 42004 ssh2 [root@node0 ~]# #上面就能夠準(zhǔn)確看出哪臺(tái)設(shè)備登陸失敗 [root@node0 ~]# grep Fail /var/log/secure | awk '{print $11}' |uniq -c1 192.168.75.131#uniq命令就是統(tǒng)計(jì)這個(gè)ip嘗試了多少次#awk命令就是用于取列,取出第11列的數(shù)值就是ip的數(shù)值/var/log/wtmp文件的作用
? 這個(gè)文件也是可以記錄每個(gè)用戶登錄的次數(shù)和登錄的時(shí)間
? 通常last命令輸出wtmp中的內(nèi)容
[root@node0 ~]# last root pts/1 192.168.75.131 Sat Sep 25 11:34 still logged in root pts/0 192.168.75.1 Sat Sep 25 10:58 still logged in reboot system boot 3.10.0-957.el7.x Sat Sep 25 10:41 - 11:39 (00:57)案例:
使用/var/log/btmp文件查看暴力破解系統(tǒng)的用戶
那么需要提前知道/var/log/btmp這個(gè)文件是用來(lái)干什么的,它是記錄錯(cuò)誤登錄系統(tǒng)的日志,如果發(fā)現(xiàn)/var/log/btmp這個(gè)文件的大小比較大,大于1M那么代表你的系統(tǒng)很可能遭到別人的暴力破解了;
也可以使用lastb命令查看
[root@node0 ~]# lastb root ssh:notty 192.168.75.130 Sat Sep 25 11:42 - 11:42 (00:00) root ssh:notty 192.168.75.130 Sat Sep 25 11:42 - 11:42 (00:00) root ssh:notty 192.168.75.130 Sat Sep 25 11:42 - 11:42 (00:00) root ssh:notty 192.168.75.131 Sat Sep 25 11:34 - 11:34 (00:00) root tty1 Fri Aug 27 23:37 - 23:37 (00:00) btmp begins Fri Aug 27 23:37:15 2021#如果發(fā)現(xiàn)了這個(gè)ip那么就可以使用防火長(zhǎng)來(lái)拒絕登錄 [root@node0 ~]# iptables -A INPUT -i ens32 -s 192.168.75.131 -j DROP#查看一下惡意ip登錄的次數(shù) [root@node0 ~]# lastb |awk '{print $3}' | sort|uniq -c | sort -n1 1 192.168.75.1312 Fri3 192.168.75.130作為黑客:如果登錄了系統(tǒng),然后需要洗干凈里面的日志應(yīng)該如何處理?
[root@node0 ~]# > /var/log/btmp [root@node0 ~]# rm -rf /var/log/btmp && touch /var/log/btmp #這兩個(gè)方法有什么區(qū)別? 使用方法2,因?yàn)閯?chuàng)建了新的文件,而正在運(yùn)行的服務(wù),還用著原來(lái)文件的inode號(hào)和文件描述碼,所需要重啟一下rsyslog服務(wù)。建議使用方法1 > /var/log/btmp日志的記錄方式
日志是分類記錄的,也可以是分級(jí)別記錄的
日志的分類
- daemon 后臺(tái)進(jìn)程相關(guān)
- kern 內(nèi)核產(chǎn)生的信息
- lpr 打印系統(tǒng)產(chǎn)生的
- authpriv 安全認(rèn)證
- cron 定時(shí)相關(guān)
- mail 郵件相關(guān)
- syslog 日志服務(wù)本身的
- news 新聞系統(tǒng)
- local0~7 自定義的日志設(shè)備
- local0-local7 8個(gè)系統(tǒng)保留的類, 供其它的程序使用或者是用戶自定義
如果日志按照級(jí)別來(lái)分類
- debug 信息對(duì)開發(fā)人員調(diào)試應(yīng)用程序有用,在操作過(guò)程中無(wú)用
- info 正常的操作信息,可以收集報(bào)告,測(cè)量吞吐量等
- notice 注意,正常但重要的事件,
- warning 警告,提示如果不采取行動(dòng)。將會(huì)發(fā)生錯(cuò)誤。比如文件系統(tǒng)使用90%
- err 錯(cuò)誤,阻止某個(gè)模塊或程序的功能不能正常使用
- crit 關(guān)鍵的錯(cuò)誤,已經(jīng)影響了整個(gè)系統(tǒng)或軟件不能正常工作的信息
- alert 警報(bào),需要立刻修改的信息
- emerg 緊急,內(nèi)核崩潰等嚴(yán)重信息
rsyslog日志服務(wù)講解
rhel5:使用的是syslog服務(wù)名,配置文件是/etc/syslog.conf
rhel6-7:使用的是rsyslog服務(wù)名,配置文件就是/etc/rsyslog.conf
#查看一下定義的內(nèi)容 [root@node0 ~]# vim /etc/rsyslog.conf #里面有很多內(nèi)容 *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log#注釋: #$UDPServerRun 514 #允許514端口接收使用UDP協(xié)議轉(zhuǎn)發(fā)過(guò)來(lái)的日志 #$InputTCPServerRun 514 ##允許514端口接收使用TCP協(xié)議轉(zhuǎn)發(fā)過(guò)來(lái)的日志 #所有的類別級(jí)別是info以上 除了mail,authpriv,cron (產(chǎn)生的日志太多,不易于查看) 類別.級(jí)別 authpriv.* 認(rèn)證的信息存放 /var/log/secure mail.* 郵件相關(guān)的信息 存放 -/var/log/maillog cron.* 計(jì)劃任務(wù)相關(guān)的信息 存放 /var/log/cron local7.* 開機(jī)時(shí)顯示的信息存放--> /var/log/boot.log 注:“- ”號(hào): 郵件的信息比較多,現(xiàn)將數(shù)據(jù)存儲(chǔ)到內(nèi)存,達(dá)到一定大小,全部寫到硬盤.有利于減少I/O進(jìn)程的開銷 數(shù)據(jù)存儲(chǔ)在內(nèi)存,如果關(guān)機(jī)不當(dāng)數(shù)據(jù)消失日志輸入的規(guī)則
. info 大于等于info級(jí)別的信息全部記錄到某個(gè)文件 .=級(jí)別 僅記錄等于某個(gè)級(jí)別的日志例:.=info 只記錄info級(jí)別的日志 .! 級(jí)別 除了某個(gè)級(jí)別意外,記錄所有的級(jí)別信息例.!err 除了err外記錄所有 .none 指的是排除某個(gè)類別 例: mail.none 所有mail類別的日志都不記錄實(shí)戰(zhàn):
自定義ssh服務(wù)的日志類型和存儲(chǔ)位置
如果是自定義日志類型和存儲(chǔ)位置的話,我們就得修改配置文件/etc/rsyslog.conf
@rsyslog服務(wù)是管理日志類型的,所以需要指定一下位置[root@node0 ~]# vim /etc/rsyslog.conf #修改配置文件,大概位置在73行,添加新的內(nèi)容 local7.* /var/log/boot.log local0.* /var/log/sshd.log #添加這一行#把local0類別的日志,保存到/var/log/sshd.log的文件中然后在把ssh服務(wù)的配置文件重新定義路徑
[root@node0 ~]# vim /etc/ssh/sshd_config #搜索找到SyslogFacility AUTHPRIV這一行#把這一行改為: SyslogFacility local0#然后重啟rsyslog服務(wù)-->優(yōu)先重啟 [root@node0 ~]# systemctl restart rsyslog.service #然后在重啟sshd服務(wù) [root@node0 ~]# systemctl restart sshd#ssh登陸測(cè)試 [liangjiawei@node0 ~]$ [root@node0 ~]# cat /var/log/sshd.log Oct 8 09:43:19 node0 sshd[7640]: Server listening on 0.0.0.0 port 22. Oct 8 09:43:19 node0 sshd[7640]: Server listening on :: port 22. Oct 8 09:44:58 node0 sshd[7641]: Accepted password for liangjiawei from 192.168.75.1 port 50616 ssh2#信息如下:時(shí)間、主機(jī)、服務(wù) 、進(jìn)程id 相關(guān)信息如何防止日志刪除?
#之前學(xué)過(guò)隱藏屬性-a或者-i [root@node0 ~]# chattr +a /var/log/sshd.log #這個(gè)功能我們很少用了; [root@node0 ~]# chattr -a /var/log/sshd.log3、實(shí)戰(zhàn)
日志切割-搭建遠(yuǎn)程日志收集服務(wù)器
那么什么是日志切割
在Linux下的日志會(huì)定期進(jìn)行滾動(dòng)增加,因此時(shí)間久了日志就會(huì)越來(lái)越多,因此我們可以通過(guò)日志定期的時(shí)間或者指定的大小進(jìn)行切割,這個(gè)是動(dòng)態(tài)的;
如果是今天的日志文件,也可以使用split工具進(jìn)行切割;
這里引入logrotate支持按照時(shí)間和大小來(lái)自動(dòng)切分,以防止日志文件太大
logrotate配置文件
[root@node0 ~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf /etc/logrotate.d /etc/rwtab.d/logrotate /usr/sbin/logrotate /usr/share/doc/logrotate-3.8.6 /usr/share/doc/logrotate-3.8.6/CHANGES /usr/share/doc/logrotate-3.8.6/COPYING /usr/share/man/man5/logrotate.conf.5.gz /usr/share/man/man8/logrotate.8.gz /var/lib/logrotate /var/lib/logrotate/logrotate.statuslogrotate的執(zhí)行由crond服務(wù)調(diào)用的;
查看一下logrotate腳本的內(nèi)容;
這里發(fā)現(xiàn)logrotate程序每天都是由cron在指定的時(shí)間(/etc/crontab)啟動(dòng)
日志每天積累就會(huì)變成很大如果你需要及時(shí)查看出某一天的日志信息的話就需要使用到日志切割
[root@node0 ~]# vim /etc/cron.daily/logrotate #!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0日志切割的說(shuō)明
/var/lib/logrotate/status文件中記錄了logrotate上次輪換日志文件的時(shí)間;
#編寫日志的配置文件logrotate [root@node0 ~]# vim /etc/logrotate.conf #通常編輯配置文件我們都需要備份一份,以免改錯(cuò) [root@node0 ~]# cp /etc/logrotate.conf /backup/ [root@node0 ~]# ls /backup/ logrotate.conf[root@node0 ~]# grep -vE "^#|^$" /etc/logrotate.conf weekly rotate 4 create dateext include /etc/logrotate.d /var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 1 } /var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1 }#全局參數(shù)說(shuō)明如下: [root@node0 ~]# grep -vE "^#|^$" /etc/logrotate.conf weekly #每周執(zhí)行回滾,或者是每周執(zhí)行一次日志回滾; rotate 4 #表示日志切分后歷史文件最多保存離現(xiàn)在最近的多少份,旋轉(zhuǎn) create #指定新創(chuàng)建的文件的權(quán)限以及所有者與所屬組 dateext #使用日期為后綴的回滾文件,也可以去/var/log目錄下看看 include /etc/logrotate.d /var/log/wtmp {monthly #日志文件按照月份來(lái)輪詢;daily、weekly、yearlycreate 0664 root utmpminsize 1Mrotate 1 } /var/log/btmp { #指定的日志文件名稱missingok #如果文件丟失不會(huì)報(bào)錯(cuò)monthly #每月輪換一次create 0600 root utmp #設(shè)置btmp這個(gè)日志文件的權(quán)限,所有者以及所屬組rotate 1 #日志切分后歷史文件最多保存一份,不會(huì)涵蓋當(dāng)前使用的日志 }#還有其他的選項(xiàng)說(shuō)明 compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用gzip進(jìn)行壓縮。 delaycompress: 總是與compress選項(xiàng)一起用,delaycompress選項(xiàng)指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行。這在你或任何軟件仍然需要讀取最新歸檔時(shí)很有用。 missingok: 在日志輪循期間,任何錯(cuò)誤將被忽略,例如“文件無(wú)法找到”之類的錯(cuò)誤。 notifempty: 如果日志文件為空,輪循不會(huì)進(jìn)行。 create 644 root root: 以指定的權(quán)限創(chuàng)建全新的日志文件,同時(shí)logrotate也會(huì)重命名原始日志文件。 postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下,rsyslogd 進(jìn)程將立即再次讀取其配置并繼續(xù)運(yùn)行。 /var/lib/logrotate/status中默認(rèn)記錄logrotate上次輪換日志文件的時(shí)間。實(shí)戰(zhàn)-使用logrotate進(jìn)行ssh日志切割
這里需要定義ssh日志存儲(chǔ)在/var/log/sshd的基礎(chǔ)之上
#首先需要?jiǎng)?chuàng)建一個(gè)sshd的配置文件,指定切割的規(guī)則 [root@node0 ~]# vim /etc/logrotate.d/sshd /var/log/sshd.log{missingok #定義了文件丟失不會(huì)報(bào)錯(cuò)weekly #定義了一周輪換一次create 0600 root root #設(shè)置btmp這個(gè)日志文件的權(quán)限,所有者以及所屬組minsize 1M #定義了日志的大小最小1Mrotete 3 #備份的數(shù)量為3分 }#重啟rsyslog服務(wù) [root@node0 ~]# systemctl restart rsyslog#使用logrotate命令來(lái)預(yù)演日志輪詢 [root@node0 ~]# logrotate -d /etc/logrotate.d/sshd reading config file /etc/logrotate.d/sshd Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /var/log/sshd.log weekly (3 rotations) empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed considering log /var/log/sshd.loglog does not need rotating ('misinze' directive is used and the log size is smaller than the minsize value#強(qiáng)制輪詢,也就是說(shuō)即使輪詢條件沒(méi)有滿足也可以通過(guò)加-f強(qiáng)制讓logrotate輪詢?nèi)罩疚募?/span> -v:顯示指令執(zhí)行過(guò)程 -f:強(qiáng)制執(zhí)行 [root@node0 ~]# logrotate -vf /etc/logrotate.d/sshd [root@node0 ~]# ls /var/log/sshd.log sshd.log sshd.log.1 #再次查看日志文件,文嘉大小為0 [root@node0 ~]# ls /var/log/sshd.log -l -rw------- 1 root root 0 10月 17 08:03 /var/log/sshd.log實(shí)戰(zhàn)-使用logrotate進(jìn)行nginx日志切割
使用nginx的日志切割與使用sshd的日志切割的方法是一樣的;需要在/etc/logrotate.d/目錄下新建一個(gè)nginx,并且制定切割規(guī)則
[root@node0 ~]# vim /etc/logrotate.d/nginx #編寫切割日志規(guī)則 /usr/local/nginx/logs/*.log{ #指定日志文件位置,可用正則匹配daily #調(diào)用頻率,有:daily,weekly,monthly可選rotate 5 #一次將存儲(chǔ)5個(gè)歸檔日志,對(duì)于第六個(gè)歸檔,時(shí)間最久的歸檔將被刪除;sharedscripts #所有的日志文件都輪轉(zhuǎn)完畢后統(tǒng)一執(zhí)行一次腳本postrotate #執(zhí)行腳本的開始標(biāo)志 if [ -f /usr/local/nginx/logs/nginx.pid ];then #判斷nginx是否啟動(dòng)/usr/local/nginx/sbin/nginx -s reload #重載配置文件 fi endscript }實(shí)戰(zhàn):遠(yuǎn)程日志日志服務(wù)器日志集中管理
這里需要兩臺(tái)服務(wù)器,一臺(tái)是server,一臺(tái)是client
規(guī)劃:
server:192.168.75.131
client:192.168.75.130–>客戶端把自己的日志發(fā)送;
server端的配置如下:
#編輯配置文件 [root@Node1 ~]# vim /etc/rsyslog.conf #使用TCP協(xié)議方式,收集日志#把19行和20行的內(nèi)容19 #$ModLoad imtcp20 #$InputTCPServerRun 514 #注意:使用UDP協(xié)議-->速度快,但是不保證數(shù)據(jù)的完整性,使用TCP協(xié)議就安全可靠,完整 改為:19 $ModLoad imtcp20 $InputTCPServerRun 514#然后重新啟動(dòng)rsyslog服務(wù) [root@server ~]# systemctl restart rsyslog#查看服務(wù)監(jiān)聽的狀態(tài): [root@server ~]# netstat -anlpt |grep 514 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 8366/rsyslogd tcp6 0 0 :::514 :::* LISTEN 8366/rsyslogd #在服務(wù)端關(guān)閉selinux和防火墻 [root@server ~]# getenforce Disabled [root@server ~]# systemctl stop firewalld [root@server ~]# systemctl status firewalld客戶端配置
[root@client ~]# vim /etc/rsyslog.conf #在末行添加92 *.* @@192.168.75.131:514#*.*代表的是所有類別和級(jí)別的日志#后面的是遠(yuǎn)程TCP協(xié)議的日志服務(wù)端IP和端口#然后重啟rsyslog服務(wù)[root@client ~]# systemctl restart rsyslog.service驗(yàn)證:
#動(dòng)態(tài)監(jiān)測(cè)server端的日志 [root@server ~]# tail -f /var/log/messages | grep client --color#然后在client端發(fā)送點(diǎn)東西給到server端 [root@client ~]# logger "hello the word" #然后服務(wù)器端就會(huì)有東西 [root@server ~]# tail -f /var/log/messages | grep client --color Oct 17 08:33:37 client systemd: Stopping System Logging Service...總結(jié)一下:
服務(wù)器使用UDP協(xié)議,客戶端只能使用配置文件中的這一行只能有一個(gè)@ *.* @192.168.75.131:514 服務(wù)器使用的tcp協(xié)議,客戶端只能使用的配置文件中這一行必須有兩個(gè)@@ *.* @@192.168.75.131:514總結(jié)
以上是生活随笔為你收集整理的计划任务以及日志管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 移动端应用 专用 新手必看
- 下一篇: 当当将上线低价电子书 盛大Bambook