linux運維零基礎學習教程:Linux計l劃任務與日志的管理

全套學習資料移步至公眾號【學神來啦】

本節(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 進行保存,重啟電腦后生效东羹。

更多學習資料請移步至公眾號【學神來啦】

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市忠烛,隨后出現的幾起案子属提,更是在濱河造成了極大的恐慌,老刑警劉巖美尸,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冤议,死亡現場離奇詭異,居然都是意外死亡师坎,警方通過查閱死者的電腦和手機恕酸,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胯陋,“玉大人蕊温,你說我怎么就攤上這事袱箱。” “怎么了义矛?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵发笔,是天一觀的道長。 經常有香客問我凉翻,道長了讨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任制轰,我火速辦了婚禮前计,結果婚禮上,老公的妹妹穿的比我還像新娘垃杖。我一直安慰自己男杈,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布缩滨。 她就那樣靜靜地躺著势就,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脉漏。 梳的紋絲不亂的頭發(fā)上苞冯,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音侧巨,去河邊找鬼舅锄。 笑死,一個胖子當著我的面吹牛司忱,可吹牛的內容都是我干的皇忿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼坦仍,長吁一口氣:“原來是場噩夢啊……” “哼鳍烁!你這毒婦竟也來了?” 一聲冷哼從身側響起繁扎,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤幔荒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梳玫,有當地人在樹林里發(fā)現了一具尸體爹梁,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年提澎,在試婚紗的時候發(fā)現自己被綠了姚垃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡盼忌,死狀恐怖积糯,靈堂內的尸體忽然破棺而出掂墓,到底是詐尸還是另有隱情,我是刑警寧澤絮宁,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布梆暮,位于F島的核電站,受9級特大地震影響绍昂,放射性物質發(fā)生泄漏啦粹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一窘游、第九天 我趴在偏房一處隱蔽的房頂上張望唠椭。 院中可真熱鬧,春花似錦忍饰、人聲如沸贪嫂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽力崇。三九已至,卻和暖如春赢织,著一層夾襖步出監(jiān)牢的瞬間亮靴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工于置, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茧吊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓八毯,卻偏偏與公主長得像搓侄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子话速,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容

  • 總結任務的作用:是做依稀周期性的任務讶踪,在生產中的主要用來定期備份數據 crond : 這個守護進程是為了周期性執(zhí)行...
    西南蔡徐坤閱讀 983評論 0 0
  • 本人從事IT行業(yè)已有十多年,有著豐富的實戰(zhàn)經驗泊交,總結了大量的學習方法俊柔,更是積累了很多的學習資料,很高興能在這里跟大...
    俠盜安全閱讀 333評論 0 0
  • 日志:系統(tǒng)活合、軟件 和 用戶操作交互信息的記錄文件。用于系統(tǒng)審核物赶,日常故障快速定位和排錯白指。 日志文件保存在 /var...
    捌千里路雲和月閱讀 1,486評論 0 8
  • Linux日志管理 自有服務,即不需要用戶獨立去安裝的軟件的服務酵紫,而是當系統(tǒng)安裝好之后就可以直接使用的服務(內置...
    白色襯衫_f48d閱讀 681評論 0 0
  • Linux日志管理 自有服務告嘲,即不需要用戶獨立去安裝的軟件的服務错维,而是當系統(tǒng)安裝好之后就可以直接使用的服務(內置...
    予爺閱讀 578評論 0 0