全套學(xué)習(xí)資料移步至公眾號(hào)【學(xué)神來啦】
本節(jié)所講內(nèi)容:
??16.1 ?計(jì)劃任務(wù)-at-cron-計(jì)劃任務(wù)使用方法
??16.2 ?日志的種類和記錄的方式-自定義ssh服務(wù)日志類型和存儲(chǔ)位置
??16.3 ?實(shí)戰(zhàn)-日志切割-搭建遠(yuǎn)程日志收集服務(wù)器
??16.4 ?實(shí)戰(zhàn)-配置公司內(nèi)網(wǎng)服務(wù)器每天定時(shí)自動(dòng)開關(guān)機(jī)
大家平常都會(huì)有一些比如說:你每天固定幾點(diǎn)起床?每天按時(shí)上班打卡、每月15號(hào)準(zhǔn)時(shí)開工資、每年2月14你倆口子某某紀(jì)念日等這些諸如此類,這些都是定時(shí)發(fā)生的。或者說是通俗點(diǎn)說:例行公事;還比如說我們還會(huì)遇到一些突發(fā)事件,臨時(shí)幾點(diǎn)過來加個(gè)班?剛好晚上幾點(diǎn)聚個(gè)餐?
像上面這些情況,如果事少的話你大腦可以記住,如果事很多,像老板經(jīng)理董事長(zhǎng)每天的工作安排,通常都是記在一些本上,或者鬧鈴提醒等。
那么,咱們的LINUX系統(tǒng)和上面的情況也很類似,我們也可以通過一些設(shè)置。來讓電腦定時(shí)提醒我們?cè)撟鍪裁词铝恕;蛘呶覀兲崆霸O(shè)置好,告訴電腦你幾點(diǎn)做什么幾點(diǎn)做什么,這種我們就叫它定時(shí)任務(wù)。而遇到一些需要執(zhí)行的事情或任務(wù)。我們也可以通過命令來告訴電腦一會(huì)臨時(shí)把這個(gè)工作給做一下
總結(jié):在我們LINUX中,我們可以通過crontab和at這兩個(gè)東西來實(shí)現(xiàn)這些功能的
計(jì)劃任務(wù)的作用:是做一些周期性的任務(wù),在生產(chǎn)中的主要用來定期備份數(shù)據(jù)
CROND:這個(gè)守護(hù)進(jìn)程是為了周期性執(zhí)行任務(wù)或處理等待事件而存在
任務(wù)調(diào)度分兩種:系統(tǒng)任務(wù)調(diào)度,用戶任務(wù)調(diào)度
計(jì)劃任務(wù)的安排方式分兩種:
一種是定時(shí)性的,也就是例行。就是每隔一定的周期就要重復(fù)來做這個(gè)事情
一種是突發(fā)性的,就是這次做完了這個(gè)事,就沒有下一次了,臨時(shí)決定,只執(zhí)行一次的任務(wù)
at和crontab這兩個(gè)命令:
at:它是一個(gè)可以處理僅執(zhí)行一次就結(jié)束的指令
crontab:它是會(huì)把你指定的工作或任務(wù),比如:腳本等,按照你設(shè)定的周期一直循環(huán)執(zhí)行下去
16.1 ?Linux計(jì)劃任務(wù)管理
16.1.1 ?at計(jì)劃任務(wù)的使用
語法格式: at ?時(shí)間 ?;服務(wù):atd ????
[root@xuegod63 ~]#?yum -y install at
[root@xuegod63 ~]# systemctl start atd? #開啟atd服務(wù)
[root@xuegod63 ~]# systemctl status atd? #查看atd服務(wù)狀態(tài)
[root@xuegod63 ~]# systemctl is-enabled atd
#查看是否開始開機(jī)啟動(dòng)服務(wù),如果彈出enabled,說明開機(jī)啟動(dòng)此服務(wù)
在Centos6查看開機(jī)啟動(dòng)服務(wù):
[root@xuegod63 ~]# chkconfig --list ?| ?grep atd? #此命令在centos7上不能執(zhí)行
在Centos7之后的系統(tǒng)查看是否開機(jī)啟動(dòng):
[root@xuegod63 ~]# systemctl list-unit-files
實(shí)戰(zhàn)-使用at創(chuàng)建計(jì)劃任務(wù)
[root@xuegod63 ~]# date? #查看系統(tǒng)時(shí)間
2018年 05月 21日 星期一 20:43:29 CST
[root@xuegod63 ~]# at 20:46 #注意:如果是上午時(shí)間,后面加上am,9:20am
at> mkdir /tmp/xuegod? #輸入你要執(zhí)行的命令
at> touch /tmp/xuegod/a.txt
#結(jié)束:ctrl+d
[root@xuegod63 ~]# at -l? #查看計(jì)劃任務(wù)
[root@xuegod63 ~]# atq? #查看計(jì)劃任務(wù)
檢查at計(jì)劃任務(wù)運(yùn)行結(jié)果:
[root@xuegod63 ~]# ls /tmp/xuegod/
a.txt
互動(dòng):如果正在執(zhí)行命令,ctrl+D ,按成ctrl+S 會(huì)怎么樣? ?尤其是使用vim保存,按成ctrl+s
解決: ctrl+s在linux下是鎖定屏幕顯示的意思,這時(shí)整個(gè)界面被鎖定,不能進(jìn)行正常輸入。使用ctrl+q來解除鎖定,
16.1.2 ?查看和刪除at將要執(zhí)行的計(jì)劃任務(wù)
這個(gè)查看,只能看到還沒有執(zhí)行的。如果這個(gè)任務(wù)已經(jīng)開始執(zhí)行或者執(zhí)行完成了,是看不到的
[root@xuegod63 ~]# at -l
5 Sat Aug 19 20:50:00 2017 a root
任務(wù)編號(hào) 執(zhí)行的時(shí)間 隊(duì)列 執(zhí)行者
5 Fri Oct 28 20:55:00 2016 a root
[root@xuegod63 ~]# at -c 5?
#-c:打印任務(wù)的內(nèi)容到標(biāo)準(zhǔn)輸出, 查看5號(hào)計(jì)劃任務(wù)具體內(nèi)容
查看定時(shí)任務(wù)內(nèi)容
[root@xuegod63 ~]# ls /var/spool/at/
a00003018452cb ?a0000501845084 ?spool
[root@xuegod63 ~]# tail -10 /var/spool/at/a0000501845084
at計(jì)劃任務(wù)的特殊寫法
[root@ xuegod63 ~]# at 20:00 2030-12-29? 在某天
[root@ xuegod63 ~]# at now +10min? 在 10分鐘后執(zhí)行
[root@ xuegod63 ~]# at 17:00 tomorrow? 明天下午5點(diǎn)執(zhí)行
[root@xuegod63 ~]# at 6:00 pm +3 days 在3天以后的下午6點(diǎn)執(zhí)行
[root@xuegod63 ~]# at 23:00 < /root/a.txt ????把a(bǔ).txt的內(nèi)容輸入給他也可以
vim a.txt
mkdir /opt/test
touch /opt/test/test.txt
刪除at計(jì)劃任務(wù)
語法: atrm ?任務(wù)編號(hào)
[root@xuegod63 ~]# at -l
3 Tue May 22 08:43:00 2018 a root
5 Mon May 21 23:00:00 2018 a root
[root@xuegod63 ~]# atrm 3 5
[root@xuegod63 ~]# at -l
3 Tue May 22 08:43:00 2018 a root
16.1.3 ?crontab定時(shí)任務(wù)的使用
crond命令定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會(huì)自動(dòng)執(zhí)行該工作
cron是一個(gè)linux下的定時(shí)執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè)。
linux任務(wù)調(diào)度的工作主要分為以下兩類:
系統(tǒng)執(zhí)行的工作:系統(tǒng)周期性所要執(zhí)行的工作,如更新whatis數(shù)據(jù)庫(kù) ?updatedb數(shù)據(jù)庫(kù),日志定期切割,收集系統(tǒng)狀態(tài)信息,/tmp定期清理
啟動(dòng)crond服務(wù)
[root@xuegod63 at]# systemctl start crond
[root@xuegod63 at]# systemctl enable crond
16.1.4 ?cron命令參數(shù)介紹
crontab的參數(shù):
crontab -l? ? #列出當(dāng)前用戶下的cron服務(wù)的詳細(xì)內(nèi)容
crontab -u user1 -l? #列出指定用戶user1下的cron服務(wù)的詳細(xì)內(nèi)容
crontab -r? #刪除cron服務(wù)
crontab -e? #編輯cron服務(wù)
例如:
crontab -u root -l? # root查看自己的cron計(jì)劃任務(wù)
crontab -u user1?-r? # root想刪除user1的cron計(jì)劃任務(wù)
crontab -e 編輯時(shí)的語法
?
星期日用0或7表示
一行對(duì)應(yīng)一個(gè)任務(wù),特殊符號(hào)的含義: ????
* 代表取值范圍內(nèi)的數(shù)字 (任意/每)
/ 指定時(shí)間的間隔頻率 ?????0-23/2??放在小時(shí)下(在0-23點(diǎn)之間,每間隔2小時(shí)執(zhí)行一次) ?????????????????????????????????????? ? ? 10-20/2 ?放在號(hào)下(在10-20號(hào)之間,每間隔2天執(zhí)行一次)
?????????????????????????????*/10???放在分鐘下(每間隔10分鐘執(zhí)行一次)
- 代表從某個(gè)數(shù)字到某個(gè)數(shù)字 8-17 ??????8到17之間執(zhí)行
, 分開幾個(gè)離散的數(shù)字 6,10-13,20??????????6執(zhí)行,10到13之間執(zhí)行,20執(zhí)行
16.1.5 ?創(chuàng)建計(jì)劃任務(wù)
例1:每天凌晨2點(diǎn)1分開始備份數(shù)據(jù)
[root@xuegod63 spool]# crontab -e? #添加計(jì)劃任務(wù)
1 2 * * * ?tar zcvf /opt/grub2.tar.gz ?/boot/grub2
[root@xuegod63 ~]# crontab ?-l? #查看
例2:黑客:以非root用戶添加計(jì)劃任務(wù)。 ?最好使用已經(jīng)存在系統(tǒng)用戶添加。這里使用bin用戶來添加
[root@xuegod63 ~]# crontab -u bin -e
*/1 * * * * echo "aaaaaaa" ?>> /tmp/bin.txt
1?* * * * 每小時(shí)第1分鐘
*/1 * * * * 每間隔1分鐘
排查:
[root@xuegod63 ~]# crontab ?-u bin -l
*/1 * * * * echo "aaaaaaa" ?>> /tmp/bin.txt
互動(dòng):如何排查所有用戶的計(jì)劃任務(wù)? ?不會(huì):1 ??有思路:6
做黑客要有一個(gè)很扎實(shí)的基礎(chǔ),還要有很好的思維
注:所有用戶的計(jì)劃任務(wù),都會(huì)在/var/spool/cron/下產(chǎn)生對(duì)應(yīng)的文件
[root@xuegod63 ~]# ll /var/spool/cron/
total 8
-rw------- 1 root root 42 Nov 12 10:11 bin
-rw------- 1 root root 19 Nov 12 10:06 root
所以后期可以使用這一招排查,黑客是否在你的機(jī)器中安裝了定時(shí)任務(wù)
16.1.6 ?系統(tǒng)級(jí)別的計(jì)劃任務(wù)
系統(tǒng)級(jí)別的計(jì)劃任務(wù)
[root@xuegod63 etc]# ll /etc/crontab
-rw-r--r--. 1 root root 451 Dec 28 ?2013 /etc/crontab ??
這個(gè)是系統(tǒng)任務(wù)調(diào)度的配置文件
[root@xuegod63 etc]# vim /etc/crontab
SHELL=/bin/bash? ? ? #指定操作系統(tǒng)使用哪個(gè)shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin? #系統(tǒng)執(zhí)行命令的搜索路徑
MAILTO=root? ? ? #將執(zhí)行任務(wù)的信息通過郵件發(fā)送給xx用戶
# 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
也可以直接在/etc/crontab中添加計(jì)劃任務(wù)
使用crontab命令的注意事項(xiàng):
環(huán)境變量的問題
清理你的郵件日志 ,比如使用重定向 &>?/dev/null
?[root@xuegod63 bin]# ls /etc/cron ??#按兩下tab鍵
cron.d/ ??????cron.deny ????cron.monthly/ cron.weekly/
cron.daily/ ??cron.hourly/ ?crontab ??
注: cron.d/ ??????#是系統(tǒng)自動(dòng)定期需要做的任務(wù),但是又不是按小時(shí),按天,按星期,按月來執(zhí)行的,那么就放在這個(gè)目錄下面。
cron.deny ????#控制用戶是否能做計(jì)劃任務(wù)的文件;
cron.monthly/ ?#每月執(zhí)行的腳本;
cron.weekly/ ??#每周執(zhí)行的腳本;
cron.daily/ ????#每天執(zhí)行的腳本;
cron.hourly/ ??#每小時(shí)執(zhí)行的腳本;
crontab ??????#主配置文件 也可添加任務(wù);
16.1.7 ?實(shí)戰(zhàn)-常見的計(jì)劃任務(wù)寫法和案例
常見寫法:
每天晚上21:00 重啟apache
0 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分鐘重啟apache
3,15 8-11 */2 * * ?/etc/init.d/httpd ?restart
晚上11點(diǎn)到早上7點(diǎn)之間,每隔一小時(shí)重啟apache
0 23-7/1 * * * /etc/init.d/httpd restart
周一到周五每天晚上 21:15 寄一封信給 root@localhost
15 21 * * 1-5 ?mail -s "hi" root@localhost < /etc/fstab
https://tool.lu/crontab
可以查看接下來7次的執(zhí)行日期
互動(dòng):crontab不支持每秒。 每2秒執(zhí)行一次腳本,怎么寫?
在腳本的循環(huán)中,添加命令 sleep 2 ,執(zhí)行10次自動(dòng)退出,然后添加,計(jì)劃任務(wù): ?
vim?sh.sh ??????????????????????????????
#!/bin/bash
for (( i=1;i<=10;i++ ))
do
????????echo /tmp/`date "+%Y%m%d%H%M%S"`.txt
????????touch /tmp/`date "+%Y%m%d%H%M%S"`.txt
????????sleep 2
done
或者
#!/bin/bash
for i in {1..10}
do
????????echo /tmp/`date "+%Y%m%d%H%M%S"`.txt
????????touch /tmp/`date "+%Y%m%d%H%M%S"`.txt
????????sleep 2
done
* * * * * ?sh?/root/sh.sh
案例要求:
每天22:00備份/etc/目錄到/tmp/backup下面
將備份命令寫入一個(gè)腳本中
每天備份文件名要求格式: 2017-08-19_etc.tar.gz
在執(zhí)行計(jì)劃任務(wù)時(shí),不要輸出任務(wù)信息
存放備份內(nèi)容的目錄要求只保留三天的數(shù)據(jù)
[root@xuegod63 ~]# cat backup.sh
#!/bin/bash
[ -d /tmp/backup ] || mkdir -p /tmp/backup
[ -f /tmp/backup/`date +%F`_etc.tar.gz ] || tar czf /tmp/backup/`date +%Y-%m-%d`_etc.tar.gz /etc
find /tmp/backup -name "*.tar.gz" -mtime +3 -exec rm -rf {} \;
#find /tmp/backup -name "*.tar.gz" -mtime -3 |xargs ls -lh
-mtime -1, ?當(dāng)前時(shí)間為 2021-04-10 22:31, 2021-04-09 22:31~ 2021-04-10 22:31之間修改的文件
-mtime 1, 當(dāng)前時(shí)間為 2021-04-10 22:31, 2021-04-08 22:31~ 2021-04-09 22:31之間修改的文件
-mtime +1,當(dāng)前時(shí)間為2021-04-10 22:31, 2021-04-08 22:21之前修改的文件
[root@xuegod63 ~]# crontab -l
13 21 * * * echo "xuegod1707" > /tmp/a.txt
0 22 * * * /root/backup.sh & ?&>/dev/null
注:工作中備份的文件不要放到/tmp,因?yàn)檫^一段時(shí)間,系統(tǒng)會(huì)清空備/tmp目錄
16.2 ?日志的種類和記錄的方式自定義ssh服務(wù)日志類型存儲(chǔ)位置
在centos8中,系統(tǒng)日志消息由兩個(gè)服務(wù)負(fù)責(zé)處理:systemd-journald和rsyslog
16.2.1 ?常見日志文件的作用
系統(tǒng)日志文件概述:/var/log目錄保管由rsyslog維護(hù)的,里面存放的一些特定于系統(tǒng)和服務(wù)的日志文件
日志文件 用途
/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/secure 安全和身份驗(yàn)證相關(guān)的消息和錯(cuò)誤的日志文件
/var/log/maillog 與郵件服務(wù)器相關(guān)的消息日志文件
/var/log/cron 與定期執(zhí)行任務(wù)相關(guān)的日志文件
/var/log/boot.log 與系統(tǒng)啟動(dòng)相關(guān)的消息記錄
例1:查看哪個(gè)IP地址經(jīng)常暴力破解系統(tǒng)用戶密碼
[root@xuegod63 ~]# ssh root@192.168.1.63? #故意輸錯(cuò)3次密碼
[root@xuegod63 log]# grep Failed /var/log/secure
Aug 19 21:55:42 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:44 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:47 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2
Aug 19 21:55:52 panda sshd[84034]: Failed password for root from 10.10.30.130 port 50917 ssh2
[root@xuegod63 log]# grep Failed /var/log/secure|awk '{print $11}'
192.168.1.63
192.168.1.63
192.168.1.63
[root@xuegod63 log]# grep Failed /var/log/secure|awk '{print $11}'|uniq -c
3 192.168.1.63
注:awk '{print $11}'? #以空格做為分隔符,打印第11列的數(shù)據(jù)
uniq命令用于報(bào)告或忽略文件中的重復(fù)行,-c或——count:在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù);
例2:/var/log/wtmp文件的作用
/var/log/wtmp也是一個(gè)二進(jìn)制文件,記錄每個(gè)用戶的登錄次數(shù)和持續(xù)時(shí)間等信息。
可以用last命令輸出wtmp中內(nèi)容: last ?顯示到目前為止,成功登錄系統(tǒng)的記錄
[root@xuegod63 ~]# last
root ????pts/2 ???????192.168.1.8 ?????Tue May 22 00:35 ??still logged in ??
root ????pts/2 ???????192.168.1.8 ?????Mon May 21 20:42 - 00:35 ?(03:53) ???
或:
[root@xuegod63 ~]# last -f /var/log/wtmp
例3:使用 /var/log/btmp文件查看暴力破解系統(tǒng)的用戶
/var/log/btmp文件是記錄錯(cuò)誤登錄系統(tǒng)的日志。如果發(fā)現(xiàn)/var/log/btmp日志文件比較大,大于1M,就算大了,就說明很多人在暴力破解ssh服務(wù),此日志需要使用lastb程序查看
[root@xuegod63 ~]# lastb
root ????ssh:notty ???xuegod63.cn ?????Mon May 21 21:49 - 21:49 ?(00:00) ???
root ????ssh:notty ???xuegod63.cn ?????Mon May 21 21:49 - 21:49 ?(00:00)
發(fā)現(xiàn)后,使用防火墻,拒絕掉:命令如下:
iptables -A INPUT -i ens33 -s 192.168.1.63(暴力破解地址) -j DROP
#將新規(guī)則追加于尾部入站請(qǐng)求ens33網(wǎng)卡,地址是192.168.1.63的IP,被丟棄。
查看惡意ip試圖登錄次數(shù):
lastb | awk ?'{ print $3}' ?| uniq -c | sort -n
??????????打印第三列 ??去重并顯示復(fù)次數(shù) ?按字符串?dāng)?shù)值大小排序
清空日志:
方法1:[root@xuegod63 ~]# > /var/log/btmp
方法2: rm -rf /var/log/btmp ?&& touch /var/log/btmp
兩者的區(qū)別?
使用方法2,因?yàn)閯?chuàng)建了新的文件,而正在運(yùn)行的服務(wù),還用著原來文件的inode號(hào)和文件描述碼,所需要重啟一下rsyslog服務(wù)。建議使用方法1
16.2.2 ?日志的記錄方式
分類??級(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í)別: ?輕à重
編碼 優(yōu)先級(jí) 嚴(yán)重性
7 debug 信息對(duì)開發(fā)人員調(diào)試應(yīng)用程序有用,在操作過程中無用
6 info 正常的操作信息,可以收集報(bào)告,測(cè)量吞吐量等
5 notice 注意,正常但重要的事件,
4 warning 警告,提示如果不采取行動(dòng)。將會(huì)發(fā)生錯(cuò)誤。比如文件系統(tǒng)使用90%
3err錯(cuò)誤,阻止某個(gè)模塊或程序的功能不能正常使用
2crit關(guān)鍵的錯(cuò)誤,已經(jīng)影響了整個(gè)系統(tǒng)或軟件不能正常工作的信息
1alert警報(bào),需要立刻修改的信息
0emerg緊急,內(nèi)核崩潰等嚴(yán)重信息
16.2.3 ?rsyslog日志服務(wù)
rhel5 ???->服務(wù)名稱syslog ?->配置文件 ?/etc/syslog.conf
rhel6-7 ?->服務(wù)名稱rsyslog ->配置文件 ?/etc/rsyslog.conf
我們來查看一下日志的配置文件信息:
編輯配置文件 ?vim /etc/rsyslog.conf
*.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ā)過來的日志
#$InputTCPServerRun ?514 ?##允許514端口接收使用TCP協(xié)議轉(zhuǎn)發(fā)過來的日志
Centos8為
#input(type="imudp" port="514") #允許514端口接收使用UDP協(xié)議轉(zhuǎn)發(fā)過來的日志
#input(type="imtcp" port="514") ##允許514端口接收使用TCP協(xié)議轉(zhuǎn)發(fā)過來的日志
#kern.* ???內(nèi)核類型的所有級(jí)別日志?-->存放到--> ???????/dev/console
*.info;mail.none;authpriv.none;cron.none ???????????????/var/log/messages
所有的類別并且級(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): 郵件的信息比較多,先將數(shù)據(jù)存儲(chǔ)到內(nèi)存,達(dá)到一定大小,全部寫到硬盤.有利于減少I/O進(jìn)程的開銷
數(shù)據(jù)存儲(chǔ)在內(nèi)存,如果關(guān)機(jī)不當(dāng)數(shù)據(jù)消失
16.2.4 ?日志輸入的規(guī)則
. info ?? 大于等于info級(jí)別的信息全部記錄到某個(gè)文件
.=級(jí)別 ???僅記錄等于某個(gè)級(jí)別的日志
例:.=info ?只記錄info級(jí)別的日志 ?
.! 級(jí)別 ? 除了某個(gè)級(jí)別意外,記錄所有的級(jí)別信息
例.!err ?除了err外記錄所有
.none ?指的是排除某個(gè)類別 ?例: mail.none ?所有mail類別的日志都不記錄
16.2.5 ?實(shí)戰(zhàn)-自定義ssh服務(wù)的日志類型和存儲(chǔ)位置
[root@xuegod63 ~]# vim /etc/rsyslog.conf ?????#以73行下,插入以下紅色標(biāo)記內(nèi)容
65 ?local7.* ???????????????????????????????????????????????/var/log/boot.log
66 ?local0.* ????????????????/var/log/sshd.log
注:把自定義local0類別的日志,保存到 /var/log/sshd.log路徑
定義ssh服務(wù)的日志類別為local0,編輯sshd服務(wù)的主配置文件
[root@xuegod63 log]# vim /etc/ssh/sshd_config ??#插入
SyslogFacility local0
改:40 ?SyslogFacility AUTHPRIV
為:40 ?SyslogFacility local0
#把sshd服務(wù)日志 默認(rèn)的安全認(rèn)證類別 改成我們的 自定義 local0類別
先重啟rsyslog服務(wù)(生效配置)
[root@xuegod63 log]# systemctl restart rsyslog
再重啟sshd服務(wù).生成日志
[root@xuegod63 log]# systemctl restart sshd
驗(yàn)證是否生成日志并查看其中的內(nèi)容,
[root@xuegod63 ~]# cat ?/var/log/sshd.log ??#說明修改成功
May 22 00:19:54 xuegod63 sshd[44737]: Server listening on 0.0.0.0 port 22.
May 22 00:19:54 xuegod63 sshd[44737]: Server listening on :: port 22.
上面對(duì)就的信息:時(shí)間 ???主機(jī) ?服務(wù) ??進(jìn)程ID ??相關(guān)的信息
互動(dòng):如何防止日志刪除?
[root@xuegod63 ~]# chattr +a /var/log/sshd.log
[root@xuegod63 ~]# lsattr /var/log/sshd.log
-----a---------- /var/log/sshd.log
[root@xuegod63 ~]# systemctl restart sshd ?
[root@xuegod63 ~]# cat /var/log/sshd.log ?#重啟服務(wù),查看日志有所增加
注:這個(gè)功能看著很強(qiáng)大,其實(shí)不實(shí)用,因這樣會(huì)讓系統(tǒng)日志切割時(shí)報(bào)錯(cuò),最主的是,黑客可以取消這個(gè)屬性。
[root@xuegod63 ~]# chattr -a /var/log/sshd.log ??#取消,這里一定要取消,不然后面做日志切割報(bào)錯(cuò)
互動(dòng):當(dāng)日志太多,導(dǎo)致日志很文件大怎么辦?
16.3 ?實(shí)戰(zhàn)-日志切割-搭建遠(yuǎn)程日志收集服務(wù)器
16.3.1 ?日志的切割
在linux下的日志會(huì)定期進(jìn)行滾動(dòng)增加,我們可以在線對(duì)正在進(jìn)行回滾的日志進(jìn)行指定大小的切割(動(dòng)態(tài)),如果這個(gè)日志是靜態(tài)的。比如沒有應(yīng)用向里面寫內(nèi)容。那么我們也可以用split工具進(jìn)行切割;其中Logrotate支持按時(shí)間和大小來自動(dòng)切分,以防止日志文件太大。
logrotate配置文件主要有:
/etc/logrotate.conf 以及 /etc/logrotate.d/ 這個(gè)子目錄下的明細(xì)配置文件。
logrotate的執(zhí)行由crond服務(wù)調(diào)用的。
[root@xuegod63 ~]# vim /etc/cron.daily/logrotate ??#查看logrotate腳本內(nèi)容
logrotate程序每天由cron定時(shí)任務(wù)在指定的時(shí)間啟動(dòng)
日志是很大的,如果讓日志無限制的記錄下去 是一件很可怕的事情,日積月累就有幾百兆占用磁盤的空間,
如果你要找出某一條可用信息:à海底撈針
日志切割:
當(dāng)日志達(dá)到某個(gè)特定的大小,我們將日志分類,之前的日志保留一個(gè)備份,再產(chǎn)生的日志創(chuàng)建一個(gè)同名的文件保存新的日志.
16.3.2 ?logrotate配置文件詳解 centos7系統(tǒng)
編輯配置文件
[root@xuegod63 log]# vim /etc/logrotate.conf
?
說明:(全局參數(shù))
weekly : ??每周執(zhí)行回滾,或者說每周執(zhí)行一次日志回滾
rotate:? ??表示日志切分后歷史文件最多保存離現(xiàn)在最近的多少份???[r???te?t] 旋轉(zhuǎn)
(rotate?4 保留最近4份日志,以前的,第5,6,7等等都刪掉)
create : ??指定新創(chuàng)建的文件的權(quán)限與所屬主與所屬組
dateext : ?使用日期為后綴的回滾文件 ?#可以去/var/log目錄下看看
單獨(dú)配置信息
?
/var/log/btmp { ??????? 指定的日志文件的名字和路徑
missingok? ? 如果文件丟失,將不報(bào)錯(cuò)
monthly ?? ? 每月輪換一次
create 0664 root utmp ??? 設(shè)置btmp這個(gè)日志文件的權(quán)限,屬主,屬組
minsize 1M ???? ? 文件超過1Mà進(jìn)行回滾(分割),所以大家要知道它不一定每個(gè)月都會(huì)進(jìn)行分割,要看這個(gè)文件大小來定
rotate 1? ? ? 日志切分后歷史文件最多保存1份,不含當(dāng)前使用的日志
其它參數(shù)說明:
monthly: 日志文件將按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次將存儲(chǔ)5個(gè)歸檔日志。對(duì)于第六個(gè)歸檔,時(shí)間最久的歸檔將被刪除。
compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用gzip進(jìn)行壓縮。
delaycompress: 總是與compress選項(xiàng)一起用,delaycompress選項(xiàng)指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行。這在你或任何軟件仍然需要讀取最新歸檔時(shí)很有用。
missingok: 在日志輪循期間,任何錯(cuò)誤將被忽略,例如“文件無法找到”之類的錯(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í)間。
16.3.3 ?實(shí)戰(zhàn)-使用 logrotate 進(jìn)行ssh日志分割
定義了ssh日志存儲(chǔ)在/var/log/sshd的基礎(chǔ)上執(zhí)行:
[root@xuegod63 ~]# vim /etc/logrotate.d/sshd ??#創(chuàng)建一個(gè)sshd配置文件,插入內(nèi)容:
/var/log/sshd.log {
????missingok
????weekly
????create 0600 root root
????minsize 1M
????rotate 3 ?????????
}
那有同學(xué)說我不想每周,或每月,我想一分鐘分割一次日志,日志當(dāng)然沒有這樣分割的,但你可以用計(jì)劃任務(wù)調(diào)用這個(gè)腳本就行了。
crontab?-e
*/1 * * * * ?logrotate -vf /etc/logrotate.d/sshd
[root@xuegod63 ~]#systemctl restart rsyslog
[root@xuegod63 ~]# logrotate ?-d ?/etc/logrotate.d/sshd? #預(yù)演,不實(shí)際輪詢(切割)
[root@xuegod63 ~]# logrotate -vf /etc/logrotate.d/sshd? #強(qiáng)制輪詢(切割),也就是說即使輪循條件沒有滿足,也可以通過加-f強(qiáng)制讓logrotate輪循日志文件
-v 顯示指令執(zhí)行過程
-f 強(qiáng)制執(zhí)行
[root@xuegod63 ~]# ls /var/log/sshd*
/var/log/sshd.log ?/var/log/sshd.log.1 ?/var/log/sshd.log.2 ?/var/log/sshd.log.3
再次查看日志文件大小,已經(jīng)為0
[root@xuegod63 ~]# ll -h /var/log/sshd.log
-rw------- 1 root root 0 5月 ?22 00:49 /var/log/sshd.log
例2:實(shí)戰(zhàn)-使用 logrotate 進(jìn)行nginx日志分割
前提已經(jīng)搭建好nginx,大家了解一下,后期講了nginx后你在練習(xí)這個(gè)
[root@xuegod63 nginx]# vim /etc/logrotate.d/nginx ??
/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
????????#讓nginx重新加載配置文件,生成新的日志文件,如果nginx沒啟動(dòng)不做操作
????fi
endscript#執(zhí)行命令的結(jié)束標(biāo)志
}
沒有切割日志: 日志150G了。。。
?
16.3.4 ?配置遠(yuǎn)程日志服務(wù)器-實(shí)現(xiàn)日志集中的管理
實(shí)驗(yàn)拓?fù)鋱D:
server端配置
[root@xuegod63 ~]# vim ?/etc/rsyslog.conf ??#使用TCP協(xié)議方式,收集日志
改:19 #$ModLoad imtcp
????20 #$InputTCPServerRun 514
為:
19 $ModLoad imtcp
20 $InputTCPServerRun 514
Centos8 把下面2行的注釋去掉
24 #module(load="imtcp") # needs to be done just once
25 #input(type="imtcp" port="514")
注:使用UDP協(xié)議à速度快à不保證數(shù)據(jù)的完整,使用TCP協(xié)議à可靠.完整
[root@xuegod63 ~]# systemctl ?restart ?rsyslog ??#重新啟動(dòng) rsyslog
查看服務(wù)監(jiān)聽的狀態(tài):
[root@xuegod63 ~]# netstat -anlpt| grep 514
tcp ???????0 ?????0 0.0.0.0:514 ????????????0.0.0.0:* ??????????????LISTEN ?????45631/rsyslogd ?????
tcp6 ??????0 ?????0 :::514 ?????????????????:::* ???????????????????LISTEN ?????45631/rsyslogd ?????
服務(wù)端驗(yàn)證:
在服務(wù)端關(guān)閉selinux和防火墻
[root@xuegod63 ~]# getenforce
Enforcing
[root@xuegod63 ~]# setenforce 0 ??#關(guān)閉selinux功能
[root@xuegod63 ~]#getenforce
Permissive
[root@xuegod63 ~]# systemctl stop firewalld
[root@xuegod63 ~]# systemctl status firewalld
[root@xuegod63 ~]# iptables -F ???#清空防火墻規(guī)則
?client端配置:
登錄xuegod64客戶端
[root@xuegod64?~]# vim /etc/rsyslog.conf ?#在90行之后,插入
*.* ??@@192.168.1.63:514 ?????????#寫入服務(wù)端的ip地址
?
注: *.* 所有類別和級(jí)別的日志; @@192.168.1.63:514運(yùn)端tcp協(xié)議的日志服務(wù)端的IP和端口
重啟rsyslog 服務(wù)
[root@xuegod64 ~]# systemctl restart rsyslog.service
服務(wù)端查看日志:
[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color ??#動(dòng)態(tài)查看日志
在客戶端xuegod64進(jìn)行測(cè)試
語法: logger ?要模擬發(fā)送的日志
[root@xuegod64 ~]# logger ?"aaaaa"
在服務(wù)端查看日志
[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color ?
#服務(wù)器端到查看消息
May 21 16:32:16 xuegod64 root: aaaaa
注:
總結(jié):服務(wù)器使用udp協(xié)議,客戶端使用的配置文件中這一行只能有一個(gè)@
*.* ?@192.168.1.64:514
服務(wù)器使用tcp協(xié)議,客戶端使用的配置文件中這一行必須有兩個(gè)@@
*.* ?@@192.168.1.64:514
16.4 ?實(shí)戰(zhàn)-配置公司內(nèi)網(wǎng)服務(wù)器每天定時(shí)自動(dòng)開關(guān)機(jī)
實(shí)戰(zhàn)場(chǎng)景:為了節(jié)約公司開銷,需要你設(shè)置公司的svn版本管理服務(wù)器,每天晚上23:00開機(jī),每天早上9:00自動(dòng)開機(jī)。
16.4.1 ?定時(shí)關(guān)機(jī)
[root@xuegod63 ~]# crontab -e ??#寫入以下內(nèi)容
0 23 * * * ??/usr/sbin/shutdown ?-h now
16.4.2 ?定時(shí)開機(jī)
這個(gè)可以通過設(shè)置bios(位于主板中的最底層控制系統(tǒng))來實(shí)現(xiàn),前提是bios支持電源管理。
進(jìn)入bios,一般是在開機(jī)后出現(xiàn)主板畫面是按Delete這個(gè)鍵,部分品牌機(jī)可能按F2,進(jìn)入bios設(shè)置界面了。然后通過鍵盤上的箭頭選擇Power Management Setup,就進(jìn)入電源管理設(shè)置了。
通過回車進(jìn)入這個(gè)設(shè)置后,選擇Wake Up Event Setup,回車選擇Press Enter。
最后,在這個(gè)界面內(nèi)繼續(xù)找到Resume By RTC Alarm,回車選擇一下。
繼續(xù)回車選擇,將Disabied 更改為Enabled,然后繼續(xù)回車確定。然后再繼續(xù)設(shè)置時(shí)間點(diǎn)和日期。
然后選擇日期,并且選擇你需要電腦每天需要在幾點(diǎn)開機(jī),當(dāng)然,要保證你的主板時(shí)間是準(zhǔn)確的。
假如你需要每天都定時(shí)開機(jī),就選擇Every Day,,你如果想要在每天6:45開機(jī),就通過數(shù)字鍵輸入06:15:00,最后,一般按F10 進(jìn)行保存,重啟電腦后生效。
更多學(xué)習(xí)資料請(qǐng)移步至公眾號(hào)【學(xué)神來啦】