linux運(yùn)維零基礎(chǔ)學(xué)習(xí)教程:Linux計(jì)l劃任務(wù)與日志的管理

全套學(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é)神來啦】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,616評(píng)論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,727評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,928評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,165評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評(píng)論 1 282
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,585評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,892評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • 總結(jié)任務(wù)的作用:是做依稀周期性的任務(wù),在生產(chǎn)中的主要用來定期備份數(shù)據(jù) crond : 這個(gè)守護(hù)進(jìn)程是為了周期性執(zhí)行...
    西南蔡徐坤閱讀 1,018評(píng)論 0 0
  • 本人從事IT行業(yè)已有十多年,有著豐富的實(shí)戰(zhàn)經(jīng)驗(yàn),總結(jié)了大量的學(xué)習(xí)方法,更是積累了很多的學(xué)習(xí)資料,很高興能在這里跟大...
    俠盜安全閱讀 365評(píng)論 0 0
  • 日志:系統(tǒng)、軟件 和 用戶操作交互信息的記錄文件。用于系統(tǒng)審核,日常故障快速定位和排錯(cuò)。 日志文件保存在 /var...
    捌千里路雲(yún)和月閱讀 1,609評(píng)論 0 8
  • Linux日志管理 自有服務(wù),即不需要用戶獨(dú)立去安裝的軟件的服務(wù),而是當(dāng)系統(tǒng)安裝好之后就可以直接使用的服務(wù)(內(nèi)置...
    白色襯衫_f48d閱讀 712評(píng)論 0 0
  • Linux日志管理 自有服務(wù),即不需要用戶獨(dú)立去安裝的軟件的服務(wù),而是當(dāng)系統(tǒng)安裝好之后就可以直接使用的服務(wù)(內(nèi)置...
    予爺閱讀 586評(píng)論 0 0