全套學習資料移步至公眾號【學神來啦】
本節(jié)所講內容:
??16.1 ?計劃任務-at-cron-計劃任務使用方法
??16.2 ?日志的種類和記錄的方式-自定義ssh服務日志類型和存儲位置
??16.3 ?實戰(zhàn)-日志切割-搭建遠程日志收集服務器
??16.4 ?實戰(zhàn)-配置公司內網服務器每天定時自動開關機
大家平常都會有一些比如說:你每天固定幾點起床碱鳞?每天按時上班打卡锁荔、每月15號準時開工資、每年2月14你倆口子某某紀念日等這些諸如此類僚焦,這些都是定時發(fā)生的舶替《股停或者說是通俗點說:例行公事;還比如說我們還會遇到一些突發(fā)事件晒旅,臨時幾點過來加個班栅盲?剛好晚上幾點聚個餐?
像上面這些情況废恋,如果事少的話你大腦可以記住谈秫,如果事很多,像老板經理董事長每天的工作安排鱼鼓,通常都是記在一些本上拟烫,或者鬧鈴提醒等。
那么迄本,咱們的LINUX系統(tǒng)和上面的情況也很類似硕淑,我們也可以通過一些設置。來讓電腦定時提醒我們該做什么事了嘉赎≈孟保或者我們提前設置好,告訴電腦你幾點做什么幾點做什么公条,這種我們就叫它定時任務拇囊。而遇到一些需要執(zhí)行的事情或任務。我們也可以通過命令來告訴電腦一會臨時把這個工作給做一下
總結:在我們LINUX中靶橱,我們可以通過crontab和at這兩個東西來實現這些功能的
計劃任務的作用:是做一些周期性的任務寥袭,在生產中的主要用來定期備份數據
CROND:這個守護進程是為了周期性執(zhí)行任務或處理等待事件而存在
任務調度分兩種:系統(tǒng)任務調度,用戶任務調度
計劃任務的安排方式分兩種:
一種是定時性的抓韩,也就是例行纠永。就是每隔一定的周期就要重復來做這個事情
一種是突發(fā)性的,就是這次做完了這個事谒拴,就沒有下一次了尝江,臨時決定,只執(zhí)行一次的任務
at和crontab這兩個命令:
at:它是一個可以處理僅執(zhí)行一次就結束的指令
crontab:它是會把你指定的工作或任務英上,比如:腳本等炭序,按照你設定的周期一直循環(huán)執(zhí)行下去
16.1 ?Linux計劃任務管理
16.1.1 ?at計劃任務的使用
語法格式: at ?時間 ?啤覆;服務:atd ????
[root@xuegod63 ~]#?yum -y install at
[root@xuegod63 ~]# systemctl start atd? #開啟atd服務
[root@xuegod63 ~]# systemctl status atd? #查看atd服務狀態(tài)
[root@xuegod63 ~]# systemctl is-enabled atd
#查看是否開始開機啟動服務,如果彈出enabled惭聂,說明開機啟動此服務
在Centos6查看開機啟動服務:
[root@xuegod63 ~]# chkconfig --list ?| ?grep atd? #此命令在centos7上不能執(zhí)行
在Centos7之后的系統(tǒng)查看是否開機啟動:
[root@xuegod63 ~]# systemctl list-unit-files
實戰(zhàn)-使用at創(chuàng)建計劃任務
[root@xuegod63 ~]# date? #查看系統(tǒng)時間
2018年 05月 21日 星期一 20:43:29 CST
[root@xuegod63 ~]# at 20:46 #注意:如果是上午時間窗声,后面加上am,9:20am
at> mkdir /tmp/xuegod? #輸入你要執(zhí)行的命令
at> touch /tmp/xuegod/a.txt
#結束:ctrl+d
[root@xuegod63 ~]# at -l? #查看計劃任務
[root@xuegod63 ~]# atq? #查看計劃任務
檢查at計劃任務運行結果:
[root@xuegod63 ~]# ls /tmp/xuegod/
a.txt
互動:如果正在執(zhí)行命令辜纲,ctrl+D 笨觅,按成ctrl+S 會怎么樣? ?尤其是使用vim保存耕腾,按成ctrl+s
解決: ctrl+s在linux下是鎖定屏幕顯示的意思见剩,這時整個界面被鎖定,不能進行正常輸入扫俺。使用ctrl+q來解除鎖定,
16.1.2 ?查看和刪除at將要執(zhí)行的計劃任務
這個查看苍苞,只能看到還沒有執(zhí)行的。如果這個任務已經開始執(zhí)行或者執(zhí)行完成了狼纬,是看不到的
[root@xuegod63 ~]# at -l
5 Sat Aug 19 20:50:00 2017 a root
任務編號 執(zhí)行的時間 隊列 執(zhí)行者
5 Fri Oct 28 20:55:00 2016 a root
[root@xuegod63 ~]# at -c 5?
#-c:打印任務的內容到標準輸出, 查看5號計劃任務具體內容
查看定時任務內容
[root@xuegod63 ~]# ls /var/spool/at/
a00003018452cb ?a0000501845084 ?spool
[root@xuegod63 ~]# tail -10 /var/spool/at/a0000501845084
at計劃任務的特殊寫法
[root@ xuegod63 ~]# at 20:00 2030-12-29? 在某天
[root@ xuegod63 ~]# at now +10min? 在 10分鐘后執(zhí)行
[root@ xuegod63 ~]# at 17:00 tomorrow? 明天下午5點執(zhí)行
[root@xuegod63 ~]# at 6:00 pm +3 days 在3天以后的下午6點執(zhí)行
[root@xuegod63 ~]# at 23:00 < /root/a.txt ????把a.txt的內容輸入給他也可以
vim a.txt
mkdir /opt/test
touch /opt/test/test.txt
刪除at計劃任務
語法: atrm ?任務編號
[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定時任務的使用
crond命令定期檢查是否有要執(zhí)行的工作羹呵,如果有要執(zhí)行的工作便會自動執(zhí)行該工作
cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預的情況下運行作業(yè)疗琉。
linux任務調度的工作主要分為以下兩類:
系統(tǒng)執(zhí)行的工作:系統(tǒng)周期性所要執(zhí)行的工作冈欢,如更新whatis數據庫 ?updatedb數據庫,日志定期切割没炒,收集系統(tǒng)狀態(tài)信息涛癌,/tmp定期清理
啟動crond服務
[root@xuegod63 at]# systemctl start crond
[root@xuegod63 at]# systemctl enable crond
16.1.4 ?cron命令參數介紹
crontab的參數:
crontab -l? ? #列出當前用戶下的cron服務的詳細內容
crontab -u user1 -l? #列出指定用戶user1下的cron服務的詳細內容
crontab -r? #刪除cron服務
crontab -e? #編輯cron服務
例如:
crontab -u root -l? # root查看自己的cron計劃任務
crontab -u user1?-r? # root想刪除user1的cron計劃任務
crontab -e 編輯時的語法
?
星期日用0或7表示
一行對應一個任務,特殊符號的含義: ????
* 代表取值范圍內的數字 (任意/每)
/ 指定時間的間隔頻率 ?????0-23/2??放在小時下(在0-23點之間送火,每間隔2小時執(zhí)行一次) ?????????????????????????????????????? ? ? 10-20/2 ?放在號下(在10-20號之間拳话,每間隔2天執(zhí)行一次)
?????????????????????????????*/10???放在分鐘下(每間隔10分鐘執(zhí)行一次)
- 代表從某個數字到某個數字 8-17 ??????8到17之間執(zhí)行
, 分開幾個離散的數字 6,10-13,20??????????6執(zhí)行种吸,10到13之間執(zhí)行弃衍,20執(zhí)行
16.1.5 ?創(chuàng)建計劃任務
例1:每天凌晨2點1分開始備份數據
[root@xuegod63 spool]# crontab -e? #添加計劃任務
1 2 * * * ?tar zcvf /opt/grub2.tar.gz ?/boot/grub2
[root@xuegod63 ~]# crontab ?-l? #查看
例2:黑客:以非root用戶添加計劃任務。 ?最好使用已經存在系統(tǒng)用戶添加坚俗。這里使用bin用戶來添加
[root@xuegod63 ~]# crontab -u bin -e
*/1 * * * * echo "aaaaaaa" ?>> /tmp/bin.txt
1?* * * * 每小時第1分鐘
*/1 * * * * 每間隔1分鐘
排查:
[root@xuegod63 ~]# crontab ?-u bin -l
*/1 * * * * echo "aaaaaaa" ?>> /tmp/bin.txt
互動:如何排查所有用戶的計劃任務镜盯? ?不會:1 ??有思路:6
做黑客要有一個很扎實的基礎,還要有很好的思維
注:所有用戶的計劃任務猖败,都會在/var/spool/cron/下產生對應的文件
[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
所以后期可以使用這一招排查速缆,黑客是否在你的機器中安裝了定時任務
16.1.6 ?系統(tǒng)級別的計劃任務
系統(tǒng)級別的計劃任務
[root@xuegod63 etc]# ll /etc/crontab
-rw-r--r--. 1 root root 451 Dec 28 ?2013 /etc/crontab ??
這個是系統(tǒng)任務調度的配置文件
[root@xuegod63 etc]# vim /etc/crontab
SHELL=/bin/bash? ? ? #指定操作系統(tǒng)使用哪個shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin? #系統(tǒng)執(zhí)行命令的搜索路徑
MAILTO=root? ? ? #將執(zhí)行任務的信息通過郵件發(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中添加計劃任務
使用crontab命令的注意事項:
環(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)自動定期需要做的任務恩闻,但是又不是按小時艺糜,按天,按星期,按月來執(zhí)行的破停,那么就放在這個目錄下面翅楼。
cron.deny ????#控制用戶是否能做計劃任務的文件;
cron.monthly/ ?#每月執(zhí)行的腳本;
cron.weekly/ ??#每周執(zhí)行的腳本;
cron.daily/ ????#每天執(zhí)行的腳本;
cron.hourly/ ??#每小時執(zhí)行的腳本;
crontab ??????#主配置文件 也可添加任務;
16.1.7 ?實戰(zhàn)-常見的計劃任務寫法和案例
常見寫法:
每天晚上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點到11點的第3和第15分鐘重啟apache
3,15 8-11 */2 * * ?/etc/init.d/httpd ?restart
晚上11點到早上7點之間黑界,每隔一小時重啟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í)行日期
互動:crontab不支持每秒管嬉。 每2秒執(zhí)行一次腳本,怎么寫园爷?
在腳本的循環(huán)中宠蚂,添加命令 sleep 2 ,執(zhí)行10次自動退出童社,然后添加,計劃任務: ?
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下面
將備份命令寫入一個腳本中
每天備份文件名要求格式: 2017-08-19_etc.tar.gz
在執(zhí)行計劃任務時著隆,不要輸出任務信息
存放備份內容的目錄要求只保留三天的數據
[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, ?當前時間為 2021-04-10 22:31扰楼, 2021-04-09 22:31~ 2021-04-10 22:31之間修改的文件
-mtime 1, 當前時間為 2021-04-10 22:31美浦, 2021-04-08 22:31~ 2021-04-09 22:31之間修改的文件
-mtime +1弦赖,當前時間為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,因為過一段時間浦辨,系統(tǒng)會清空備/tmp目錄
16.2 ?日志的種類和記錄的方式自定義ssh服務日志類型存儲位置
在centos8中蹬竖,系統(tǒng)日志消息由兩個服務負責處理:systemd-journald和rsyslog
16.2.1 ?常見日志文件的作用
系統(tǒng)日志文件概述:/var/log目錄保管由rsyslog維護的,里面存放的一些特定于系統(tǒng)和服務的日志文件
日志文件 用途
/var/log/message 大多數系統(tǒng)日志消息記錄在此處流酬。有也例外的:如與身份驗證币厕,電子郵件處理相關的定期作業(yè)任務等
/var/log/secure 安全和身份驗證相關的消息和登錄失敗的日志文件。 ?ssh遠程連接產生的日志
/var/log/secure 安全和身份驗證相關的消息和錯誤的日志文件
/var/log/maillog 與郵件服務器相關的消息日志文件
/var/log/cron 與定期執(zhí)行任務相關的日志文件
/var/log/boot.log 與系統(tǒng)啟動相關的消息記錄
例1:查看哪個IP地址經常暴力破解系統(tǒng)用戶密碼
[root@xuegod63 ~]# ssh root@192.168.1.63? #故意輸錯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列的數據
uniq命令用于報告或忽略文件中的重復行旦装,-c或——count:在每列旁邊顯示該行重復出現的次數;
例2:/var/log/wtmp文件的作用
/var/log/wtmp也是一個二進制文件摊滔,記錄每個用戶的登錄次數和持續(xù)時間等信息阴绢。
可以用last命令輸出wtmp中內容: 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文件是記錄錯誤登錄系統(tǒng)的日志艰躺。如果發(fā)現/var/log/btmp日志文件比較大呻袭,大于1M,就算大了腺兴,就說明很多人在暴力破解ssh服務左电,此日志需要使用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ā)現后,使用防火墻,拒絕掉:命令如下:
iptables -A INPUT -i ens33 -s 192.168.1.63(暴力破解地址) -j DROP
#將新規(guī)則追加于尾部入站請求ens33網卡券腔,地址是192.168.1.63的IP伏穆,被丟棄。
查看惡意ip試圖登錄次數:
lastb | awk ?'{ print $3}' ?| uniq -c | sort -n
??????????打印第三列 ??去重并顯示復次數 ?按字符串數值大小排序
清空日志:
方法1:[root@xuegod63 ~]# > /var/log/btmp
方法2: rm -rf /var/log/btmp ?&& touch /var/log/btmp
兩者的區(qū)別纷纫?
使用方法2枕扫,因為創(chuàng)建了新的文件,而正在運行的服務辱魁,還用著原來文件的inode號和文件描述碼烟瞧,所需要重啟一下rsyslog服務。建議使用方法1
16.2.2 ?日志的記錄方式
分類??級別?
日志的分類:
daemon ?后臺進程相關 ?
kern ? 內核產生的信息
lpr ?? ?打印系統(tǒng)產生的
authpriv ?安全認證
cron ?? ?定時相關
mail? ?郵件相關
syslog ? 日志服務本身的
news? ?新聞系統(tǒng)
local0~7 ?自定義的日志設備
local0-local7 ???8個系統(tǒng)保留的類染簇, 供其它的程序使用或者是用戶自定義
日志的級別: ?輕à重
編碼 優(yōu)先級 嚴重性
7 debug 信息對開發(fā)人員調試應用程序有用参滴,在操作過程中無用
6 info 正常的操作信息,可以收集報告锻弓,測量吞吐量等
5 notice 注意砾赔,正常但重要的事件,
4 warning 警告青灼,提示如果不采取行動暴心。將會發(fā)生錯誤。比如文件系統(tǒng)使用90%
3err錯誤杂拨,阻止某個模塊或程序的功能不能正常使用
2crit關鍵的錯誤专普,已經影響了整個系統(tǒng)或軟件不能正常工作的信息
1alert警報,需要立刻修改的信息
0emerg緊急,內核崩潰等嚴重信息
16.2.3 ?rsyslog日志服務
rhel5 ???->服務名稱syslog ?->配置文件 ?/etc/syslog.conf
rhel6-7 ?->服務名稱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協議轉發(fā)過來的日志
#$InputTCPServerRun ?514 ?##允許514端口接收使用TCP協議轉發(fā)過來的日志
Centos8為
#input(type="imudp" port="514") #允許514端口接收使用UDP協議轉發(fā)過來的日志
#input(type="imtcp" port="514") ##允許514端口接收使用TCP協議轉發(fā)過來的日志
#kern.* ???內核類型的所有級別日志?-->存放到--> ???????/dev/console
*.info;mail.none;authpriv.none;cron.none ???????????????/var/log/messages
所有的類別并且級別是info以上 除了mail,authpriv,cron (產生的日志太多,不易于查看)
類別.級別
authpriv.* ?????認證的信息-->存放--> ?????????????????/var/log/secure
mail.* ????????郵件相關的信息--> 存放-->-/var/log/maillog
cron.* ????????計劃任務相關的信息-->存放-->????????????/var/log/cron
local7.* ???????開機時顯示的信息-->存放--> ????????????/var/log/boot.log
注:
“-”號: 郵件的信息比較多,先將數據存儲到內存,達到一定大小,全部寫到硬盤.有利于減少I/O進程的開銷
數據存儲在內存,如果關機不當數據消失
16.2.4 ?日志輸入的規(guī)則
. info ?? 大于等于info級別的信息全部記錄到某個文件
.=級別 ???僅記錄等于某個級別的日志
例:.=info ?只記錄info級別的日志 ?
.! 級別 ? 除了某個級別意外,記錄所有的級別信息
例.!err ?除了err外記錄所有
.none ?指的是排除某個類別 ?例: mail.none ?所有mail類別的日志都不記錄
16.2.5 ?實戰(zhàn)-自定義ssh服務的日志類型和存儲位置
[root@xuegod63 ~]# vim /etc/rsyslog.conf ?????#以73行下弹沽,插入以下紅色標記內容
65 ?local7.* ???????????????????????????????????????????????/var/log/boot.log
66 ?local0.* ????????????????/var/log/sshd.log
注:把自定義local0類別的日志檀夹,保存到 /var/log/sshd.log路徑
定義ssh服務的日志類別為local0,編輯sshd服務的主配置文件
[root@xuegod63 log]# vim /etc/ssh/sshd_config ??#插入
SyslogFacility local0
改:40 ?SyslogFacility AUTHPRIV
為:40 ?SyslogFacility local0
#把sshd服務日志 默認的安全認證類別 改成我們的 自定義 local0類別
先重啟rsyslog服務(生效配置)
[root@xuegod63 log]# systemctl restart rsyslog
再重啟sshd服務.生成日志
[root@xuegod63 log]# systemctl restart sshd
驗證是否生成日志并查看其中的內容策橘,
[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.
上面對就的信息:時間 ???主機 ?服務 ??進程ID ??相關的信息
互動:如何防止日志刪除炸渡?
[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 ?#重啟服務,查看日志有所增加
注:這個功能看著很強大役纹,其實不實用偶摔,因這樣會讓系統(tǒng)日志切割時報錯,最主的是促脉,黑客可以取消這個屬性辰斋。
[root@xuegod63 ~]# chattr -a /var/log/sshd.log ??#取消,這里一定要取消瘸味,不然后面做日志切割報錯
互動:當日志太多宫仗,導致日志很文件大怎么辦?
16.3 ?實戰(zhàn)-日志切割-搭建遠程日志收集服務器
16.3.1 ?日志的切割
在linux下的日志會定期進行滾動增加旁仿,我們可以在線對正在進行回滾的日志進行指定大小的切割(動態(tài))藕夫,如果這個日志是靜態(tài)的孽糖。比如沒有應用向里面寫內容。那么我們也可以用split工具進行切割毅贮;其中Logrotate支持按時間和大小來自動切分,以防止日志文件太大办悟。
logrotate配置文件主要有:
/etc/logrotate.conf 以及 /etc/logrotate.d/ 這個子目錄下的明細配置文件。
logrotate的執(zhí)行由crond服務調用的滩褥。
[root@xuegod63 ~]# vim /etc/cron.daily/logrotate ??#查看logrotate腳本內容
logrotate程序每天由cron定時任務在指定的時間啟動
日志是很大的,如果讓日志無限制的記錄下去 是一件很可怕的事情病蛉,日積月累就有幾百兆占用磁盤的空間,
如果你要找出某一條可用信息:à海底撈針
日志切割:
當日志達到某個特定的大小,我們將日志分類,之前的日志保留一個備份,再產生的日志創(chuàng)建一個同名的文件保存新的日志.
16.3.2 ?logrotate配置文件詳解 centos7系統(tǒng)
編輯配置文件
[root@xuegod63 log]# vim /etc/logrotate.conf
?
說明:(全局參數)
weekly : ??每周執(zhí)行回滾瑰煎,或者說每周執(zhí)行一次日志回滾
rotate:? ??表示日志切分后歷史文件最多保存離現在最近的多少份???[r???te?t] 旋轉
(rotate?4 保留最近4份日志铺然,以前的,第5,6,7等等都刪掉)
create : ??指定新創(chuàng)建的文件的權限與所屬主與所屬組
dateext : ?使用日期為后綴的回滾文件 ?#可以去/var/log目錄下看看
單獨配置信息
?
/var/log/btmp { ??????? 指定的日志文件的名字和路徑
missingok? ? 如果文件丟失酒甸,將不報錯
monthly ?? ? 每月輪換一次
create 0664 root utmp ??? 設置btmp這個日志文件的權限魄健,屬主,屬組
minsize 1M ???? ? 文件超過1Mà進行回滾(分割)插勤,所以大家要知道它不一定每個月都會進行分割沽瘦,要看這個文件大小來定
rotate 1? ? ? 日志切分后歷史文件最多保存1份,不含當前使用的日志
其它參數說明:
monthly: 日志文件將按月輪循饮六。其它可用值為‘daily’其垄,‘weekly’或者‘yearly’。
rotate 5: 一次將存儲5個歸檔日志卤橄。對于第六個歸檔,時間最久的歸檔將被刪除臂外。
compress: 在輪循任務完成后窟扑,已輪循的歸檔將使用gzip進行壓縮。
delaycompress: 總是與compress選項一起用漏健,delaycompress選項指示logrotate不要將最近的歸檔壓縮嚎货,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用蔫浆。
missingok: 在日志輪循期間殖属,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤瓦盛。
notifempty: 如果日志文件為空洗显,輪循不會進行。
create 644 root root: 以指定的權限創(chuàng)建全新的日志文件原环,同時logrotate也會重命名原始日志文件挠唆。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行嘱吗。在這種情況下玄组,rsyslogd 進程將立即再次讀取其配置并繼續(xù)運行。
/var/lib/logrotate/status中默認記錄logrotate上次輪換日志文件的時間。
16.3.3 ?實戰(zhàn)-使用 logrotate 進行ssh日志分割
定義了ssh日志存儲在/var/log/sshd的基礎上執(zhí)行:
[root@xuegod63 ~]# vim /etc/logrotate.d/sshd ??#創(chuàng)建一個sshd配置文件俄讹,插入內容:
/var/log/sshd.log {
????missingok
????weekly
????create 0600 root root
????minsize 1M
????rotate 3 ?????????
}
那有同學說我不想每周哆致,或每月,我想一分鐘分割一次日志患膛,日志當然沒有這樣分割的摊阀,但你可以用計劃任務調用這個腳本就行了。
crontab?-e
*/1 * * * * ?logrotate -vf /etc/logrotate.d/sshd
[root@xuegod63 ~]#systemctl restart rsyslog
[root@xuegod63 ~]# logrotate ?-d ?/etc/logrotate.d/sshd? #預演剩瓶,不實際輪詢(切割)
[root@xuegod63 ~]# logrotate -vf /etc/logrotate.d/sshd? #強制輪詢(切割)驹溃,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日志文件
-v 顯示指令執(zhí)行過程
-f 強制執(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
再次查看日志文件大小延曙,已經為0
[root@xuegod63 ~]# ll -h /var/log/sshd.log
-rw------- 1 root root 0 5月 ?22 00:49 /var/log/sshd.log
例2:實戰(zhàn)-使用 logrotate 進行nginx日志分割
前提已經搭建好nginx豌鹤,大家了解一下,后期講了nginx后你在練習這個
[root@xuegod63 nginx]# vim /etc/logrotate.d/nginx ??
/usr/local/nginx/logs/*.log { ????#指定日志文件位置枝缔,可用正則匹配
daily ????????????????????????????#調用頻率剧蹂,有:daily,weekly说订,monthly可選
rotate 5 ?????????????????????????#一次將存儲5個歸檔日志桅狠。對于第六個歸檔,時間最久的歸檔將被刪除趴荸。
sharedscripts#所有的日志文件都輪轉完畢后統(tǒng)一執(zhí)行一次腳本儒溉,
postrotate#執(zhí)行命令的開始標志
????if [ -f /usr/local/nginx/logs/nginx.pid ]; then ???#判斷nginx是否啟動
????????/usr/local/nginx/sbin/nginx -s reload
????????#讓nginx重新加載配置文件,生成新的日志文件发钝,如果nginx沒啟動不做操作
????fi
endscript#執(zhí)行命令的結束標志
}
沒有切割日志: 日志150G了顿涣。。酝豪。
?
16.3.4 ?配置遠程日志服務器-實現日志集中的管理
實驗拓撲圖:
server端配置
[root@xuegod63 ~]# vim ?/etc/rsyslog.conf ??#使用TCP協議方式涛碑,收集日志
改: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協議à速度快à不保證數據的完整,使用TCP協議à可靠.完整
[root@xuegod63 ~]# systemctl ?restart ?rsyslog ??#重新啟動 rsyslog
查看服務監(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 ?????
服務端驗證:
在服務端關閉selinux和防火墻
[root@xuegod63 ~]# getenforce
Enforcing
[root@xuegod63 ~]# setenforce 0 ??#關閉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 ?????????#寫入服務端的ip地址
?
注: *.* 所有類別和級別的日志蒲障; @@192.168.1.63:514運端tcp協議的日志服務端的IP和端口
重啟rsyslog 服務
[root@xuegod64 ~]# systemctl restart rsyslog.service
服務端查看日志:
[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color ??#動態(tài)查看日志
在客戶端xuegod64進行測試
語法: logger ?要模擬發(fā)送的日志
[root@xuegod64 ~]# logger ?"aaaaa"
在服務端查看日志
[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color ?
#服務器端到查看消息
May 21 16:32:16 xuegod64 root: aaaaa
注:
總結:服務器使用udp協議,客戶端使用的配置文件中這一行只能有一個@
*.* ?@192.168.1.64:514
服務器使用tcp協議瘫证,客戶端使用的配置文件中這一行必須有兩個@@
*.* ?@@192.168.1.64:514
16.4 ?實戰(zhàn)-配置公司內網服務器每天定時自動開關機
實戰(zhàn)場景:為了節(jié)約公司開銷揉阎,需要你設置公司的svn版本管理服務器,每天晚上23:00開機痛悯,每天早上9:00自動開機余黎。
16.4.1 ?定時關機
[root@xuegod63 ~]# crontab -e ??#寫入以下內容
0 23 * * * ??/usr/sbin/shutdown ?-h now
16.4.2 ?定時開機
這個可以通過設置bios(位于主板中的最底層控制系統(tǒng))來實現,前提是bios支持電源管理载萌。
進入bios惧财,一般是在開機后出現主板畫面是按Delete這個鍵巡扇,部分品牌機可能按F2,進入bios設置界面了垮衷。然后通過鍵盤上的箭頭選擇Power Management Setup厅翔,就進入電源管理設置了。
通過回車進入這個設置后搀突,選擇Wake Up Event Setup刀闷,回車選擇Press Enter。
最后仰迁,在這個界面內繼續(xù)找到Resume By RTC Alarm甸昏,回車選擇一下。
繼續(xù)回車選擇徐许,將Disabied 更改為Enabled施蜜,然后繼續(xù)回車確定。然后再繼續(xù)設置時間點和日期雌隅。
然后選擇日期翻默,并且選擇你需要電腦每天需要在幾點開機,當然恰起,要保證你的主板時間是準確的修械。
假如你需要每天都定時開機,就選擇Every Day检盼,肯污,你如果想要在每天6:45開機,就通過數字鍵輸入06:15:00吨枉,最后仇箱,一般按F10 進行保存,重啟電腦后生效东羹。
更多學習資料請移步至公眾號【學神來啦】