Centos7.5-Linux計劃任務與日誌的管理

本節所講內容:

  • 16.1 計劃任務-at-cron-計劃任務使用方法
  • 16.2 日誌的種類和記錄的方式-自定義ssh服務日誌類型和存儲位置
  • 16.3 實戰-日誌切割-搭建遠程日誌收集服務器
  • 16.4 實戰-配置公司內網服務器每天定時自動開關機
  • 16.1 計劃任務-at-cron-計劃任務使用方法

大家平常都會有一些比如說:你每天固定幾點起牀?每天按時上班打卡、每月15號準時開工資、每年2月14你倆口子某某紀念日等這些諸如此類,這些都是定時發生的。或者說是通俗點說:例行公事;還比如說我們還會遇到一些突發事件,臨時幾點過來加個班?剛好晚上幾點聚個餐?

  • 像上面這些情況,如果事少的話你大腦可以記住,如果事很多,像老闆經理董事長每天的工作安排,通常都是記在一些本上,或者鬧鈴提醒等。

  • 那麼,咱們的LINUX系統和上面的情況也很類似,我們也可以通過一些設置。來讓電腦定時提醒我們該做什麼事了。或者我們提前設置好,告訴電腦你幾點做什麼幾點做什麼,這種我們就叫它定時任務。而遇到一些需要執行的事情或任務。我們也可以通過命令來告訴電腦一會臨時把這個工作給做一下

總結:在我們LINUX中,我們可以通過crontab和at這兩個東西來實現這些功能的
計劃任務的作用:是做一些週期性的任務,在生產中的主要用來定期備份數據
CROND:這個守護進程是爲了週期性執行任務或處理等待事件而存在
任務調度分兩種:系統任務調度,用戶任務調度

計劃任務的安排方式分兩種:

  • 一種是定時性的,也就是例行。就是每隔一定的週期就要重複來做這個事情

  • 一種是突發性的,就是這次做完了這個事,就沒有下一次了,臨時決定,只執行一次的任務

at和crontab這兩個命令:

  • at:它是一個可以處理僅執行一次就結束的指令

  • crontab:它是會把你指定的工作或任務,比如:腳本等,按照你設定的週期一直循環執行下去

16.1.1 at計劃任務的使用

語法格式: at  時間  ;服務:atd     
[root@xuegod63 ~]# systemctl start atd     #開啓atd服務
[root@xuegod63 ~]# systemctl status atd   #查看atd服務狀態
[root@xuegod63 ~]# systemctl is-enabled atd    #查看是否開始開機啓動服務,如果彈出enabled,說明開機啓動此服務

在Centos6查看開機啓動服務:

[root@xuegod63 ~]# chkconfig --list  |  grep atd   #此命令在centos7上不能執行

實戰-使用at創建計劃任務

[root@xuegod63 ~]# date          #查看系統時間
2018年 05月 21日 星期一 20:43:29 CST 
[root@xuegod63 ~]# at 20:46       #注意:如果是上午時間,後面加上am,比如9:20am
at> mkdir /tmp/xuegod    #輸入你要執行的命令
at> touch /tmp/xuegod/a.txt
at> <EOT>        #結束:ctrl+d
[root@xuegod63 ~]# at -l     #查看計劃任務
[root@xuegod63 ~]# atq     #查看計劃任務
檢查at計劃任務運行結果:
[root@xuegod63 ~]# ls /tmp/xuegod/
a.txt
互動:如果正在執行命令,ctrl+D ,按成ctrl+S 會怎麼樣?  尤其是使用vim保存,按成ctrl+s 
解決: ctrl+s在linux下是鎖定屏幕顯示的意思,這時整個界面被鎖定,不能進行正常輸入。使用ctrl+q來解除鎖定,

16.1.2 查看和刪除at將要執行的計劃任務

這個查看,只能看到還沒有執行的。如果這個任務已經開始執行或者執行完成了,是看不到的
[root@xuegod63 ~]# at -l
5	Sat Aug 19 20:50:00 2017 a root
任務編號	執行的時間	隊列	執行者
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 -5 /var/spool/at/a0000501845084

at計劃任務的特殊寫法
[root@ panda ~]# at 20:00 2018-10-1   在某天 
[root@ panda ~]# at now +10min   在 10分鐘後執行
[root@ panda ~]# at 17:00 tomorrow   明天下午5點執行
[root@xuegod63 ~]# at 6:00 pm +3 days   在3天以後的下午6點執行
[root@xuegod63 ~]# at 23:00 < a.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 5
[root@xuegod63 ~]# at -l
3	Tue May 22 08:43:00 2018 a root
16.1.3 crontab定時任務的使用
crond命令定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作
cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。
linux任務調度的工作主要分爲以下兩類:
系統執行的工作:系統週期性所要執行的工作,如更新whatis數據庫  updatedb數據庫,日誌定期切割,收集系統狀態信息,/tmp定期清理
啓動crond服務
[root@xuegod63 at]# systemctl start crond
[root@xuegod63 at]# systemctl enable crond

16.1.4 cron命令參數介紹:

crontab的參數:
crontab -u hr       #指定hr用戶的cron服務
crontab -l          #列出當前用戶下的cron服務的詳細內容
crontab -u mk -l   #列出指定用戶mk下的cron服務的詳細內容
crontab -r   #刪除cron服務
crontab -e   #編輯cron服務

例如:

crontab -u root -l     # root查看自己的cron計劃任務
crontab -u san -r      # root想刪除san的cron計劃任務
cron -e 編輯時的語法

星期日用0或7表示

一行對應一個任務,特殊符號的含義:     
*	代表取值範圍內的數字	(任意/每)
/	指定時間的間隔頻率	*/10   0-23/2
-	代表從某個數字到某個數字	8-17  
,	分開幾個離散的數字	6,10-13,20

16.1.5 創建計劃任務

例1:每天凌晨2點1分開始備份數據
[root@xuegod63 spool]# crontab -e   #添加計劃任務
1 2 * * *  tar zcvf /opt/grub2.tar.gz  /boot/grub2 
[root@xuegod63 ~]# crontab  -l    #查看
例2:黑客:以非root用戶添加計劃任務。  最好使用已經存在系統用戶添加。這裏使用bin用戶來添加
[root@xuegod63 ~]# crontab -u bin -e
1 * * * * echo "aaaaaaa"  >> /tmp/bin.txt
排查:
[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 系統級別的計劃任務

系統級別的計劃任務
[root@xuegod63 etc]# ll /etc/crontab
-rw-r--r--. 1 root root 451 Dec 28  2013 /etc/crontab   
這個是系統任務調度的配置文件
[root@xuegod63 etc]# vim /etc/crontab
SHELL=/bin/bash    #指定操作系統使用哪個shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin     #系統執行命令的搜索路徑
MAILTO=root   #將執行任務的信息通過郵件發送給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命令的注意事項:
環境變量的問題
清理你的郵件日誌 ,比如使用重定向 >/dev/null  2>&1

 [root@xuegod63 bin]# ls /etc/cron   #按兩下tab鍵
cron.d/       cron.deny     cron.monthly/ cron.weekly/
cron.daily/   cron.hourly/  crontab   
注: cron.d/       #是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來執行的,那麼就放在這個目錄下面。
cron.deny     #控制用戶是否能做計劃任務的文件;
cron.monthly/  #每月執行的腳本;
cron.weekly/   #每週執行的腳本;
cron.daily/     #每天執行的腳本;
cron.hourly/   #每小時執行的腳本;
crontab       #主配置文件 也可添加任務;

16.1.7 實戰-常見的計劃任務寫法和案例

常見寫法:
每天晚上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分鐘重啓apach
			3,15 8-11 */2 * *  /etc/init.d/httpd  restart
晚上11點到早上7點之間,每隔一小時重啓apach
			0 23-7/1 * * * /etc/init.d/apach restart
週一到週五每天晚上 21:15 寄一封信給 root@panda:
			15 21 * * 1-5  mail -s "hi" root@panda < /etc/fstab
互動:crontab不支持每秒。 每2秒執行一次腳本,怎麼寫?
在腳本的死循環中,添加命令 sleep 2 ,執行30次自動退出,然後添加,計劃任務:
			* * * * *  /back.sh 
	案例要求:
每天2:00備份/etc/目錄到/tmp/backup下面
將備份命令寫入一個腳本中
每天備份文件名要求格式: 2017-08-19_etc.tar.gz
在執行計劃任務時,不要輸出任務信息
存放備份內容的目錄要求只保留三天的數據
====================================================
mkdir /tmp/backup
tar zcf etc.tar.gz /etc
find /tmp/backup -name “*.tar.gz” -mtime +3 -exec rm -rf {}\;
============================================================
[root@xuegod63 ~]# crontab -l
13 21 * * * echo "xuegod1707" > /tmp/a.txt
0 22 * * * /root/backup.sh  & > /dev/null
[root@xuegod63 ~]# cat backup.sh 
#!/bin/bash
find /tmp/backup -name "*.tar.gz" -mtime +3 -exec rm -f {}\;
#find /tmp/backup -name "*.tar.gz" -mtime +3 -delete
#find /tmp/backup -name "*.tar.gz" -mtime +3 |xargs rm -f
tar zcf /tmp/backup/`date +%F`_etc.tar.gz /etc
注:工作中備份的文件不要放到/tmp,因爲過一段時間,系統會清空備/tmp目錄

16.2 日誌的種類和記錄的方式-自定義ssh服務日誌類型和存儲位置

在centos7中,系統日誌消息由兩個服務負責處理:systemd-journald和rsyslog
16.2.1 常見日誌文件的作用

系統日誌文件概述:/var/log目錄保管由rsyslog維護的,裏面存放的一些特定於系統和服務的日誌文件
日誌文件	用途
/var/log/message	大多數系統日誌消息記錄在此處。有也例外的:如與身份驗證,電子郵件處理相關的定期作業任務等
/var/log/secure	安全和身份驗證相關的消息和登錄失敗的日誌文件。  ssh遠程連接產生的日誌
/var/log/maillog	與郵件服務器相關的消息日誌文件
/var/log/cron	與定期執行任務相關的日誌文件
/var/log/boot.log	與系統啓動相關的消息記錄
/var/log/dmesg	與系統啓動相關的消息記錄

例1:查看哪個IP地址經常暴力破解系統用戶密碼

[root@xuegod63 ~]# ssh [email protected]  #故意輸錯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}'|uniq -c
3 192.168.1.63
注:awk '{print $11}'  #以空格做爲分隔符,打印第11列的數據
uniq命令用於報告或忽略文件中的重複行,-c或——count:在每列旁邊顯示該行重複出現的次數;

例2:/var/log/wtmp文件的作用

/var/log/wtmp也是一個二進制文件,記錄每個用戶的登錄次數和持續時間等信息。
可以用last命令輸出wtmp中內容: last  顯示到目前爲止,成功登錄系統的記錄
[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文件查看暴力破解系統的用戶

/var/log/btmp文件是記錄錯誤登錄系統的日誌。如果發現/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)
發現後,使用防火牆,拒絕掉:命令如下:
iptables -A INPUT -i eth0 -s. 192.168.1.63 -j DROP

查看惡意ip試圖登錄次數:

lastb | awk  '{ print $3}'  | sort | uniq -c | sort -n
清空日誌:
方法1:[root@xuegod63 ~]# > /var/log/btmp
方法2: rm -rf /var/log/btmp  && touch /var/log/btmp
兩者的區別?
使用方法2,因爲創建了新的文件,而正在運行的服務,還用着原來文件的inode號和文件描述碼,所需要重啓一下rsyslog服務。建議使用方法1  > /var/log/btmp

16.2.2 日誌的記錄方式

分類 級別
日誌的分類:
	daemon  後臺進程相關  
	kern  	內核產生的信息
	lpr   	 打印系統產生的
	authpriv  安全認證
	cron   	 定時相關
	mail 	 郵件相關
	syslog  	日誌服務本身的
	news 	 新聞系統
	local0~7  自定義的日誌設備
local0-local7    8個系統保留的類, 供其它的程序使用或者是用戶自定義
日誌的級別:  輕重
編碼	優先級	嚴重性
7	debug	信息對開發人員調試應用程序有用,在操作過程中無用
6	info	正常的操作信息,可以收集報告,測量吞吐量等
5	notice	注意,正常但重要的事件,
4	warning	警告,提示如果不採取行動。將會發生錯誤。比如文件系統使用90%
3	err	錯誤,阻止某個模塊或程序的功能不能正常使用
2	crit	關鍵的錯誤,已經影響了整個系統或軟件不能正常工作的信息
1	alert	警報,需要立刻修改的信息
0	emerg	緊急,內核崩潰等嚴重信息

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協議轉發過來的日誌
#$InputTCPServerRun  514  ##允許514端口接收使用TCP協議轉發過來的日誌
#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 日誌輸入的規則

. info   	大於等於info級別的信息全部記錄到某個文件
.=級別    僅記錄等於某個級別的日誌
		例:.=info  只記錄info級別的日誌  
.! 級別  	除了某個級別意外,記錄所有的級別信息
		例.!err  除了err外記錄所有
.none  指的是排除某個類別  例: mail.none  所有mail類別的日誌都不記錄

16.2.5 實戰-自定義ssh服務的日誌類型和存儲位置

[root@xuegod63 ~]# vim /etc/rsyslog.conf      #以73行下,插入以下紅色標記內容
73  local7.*                                                /var/log/boot.log
74  local0.*                 /var/log/sshd.log
注:把local0類別的日誌,保存到 /var/log/sshd.log路徑

定義ssh服務的日誌類別爲local0,編輯sshd服務的主配置文件
[root@xuegod63 log]# vim /etc/ssh/sshd_config   #插入
SyslogFacility local0
改:32  SyslogFacility AUTHPRIV
爲:32  SyslogFacility 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  #重啓服務,查看日誌有所增加
注:這個功能看着很強大,其實不實用,因這樣會讓系統日誌切割時報錯,日誌有時會太。最主的是,黑客可以取消這個屬性。
[root@xuegod63 ~]# chattr -a /var/log/sshd.log   #取消,這裏一定要取消,不然後面做日誌切割報錯
互動:當日志太多,導致日誌很文件大怎麼辦?

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ羣:722287089,即可獲得以下福利:
①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥在線答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲計算集羣架構師4冊書籍

16.3 實戰-日誌切割-搭建遠程日誌收集服務器
16.3.1 日誌的切割

在linux下的日誌會定期進行滾動增加,我們可以在線對正在進行回滾的日誌進行指定大小的切割(動態),如果這個日誌是靜態的。比如沒有應用向裏面寫內容。那麼我們也可以用split工具進行切割;其中Logrotate支持按時間和大小來自動切分,以防止日誌文件太大。

logrotate配置文件主要有:
	/etc/logrotate.conf 以及 /etc/logrotate.d/ 這個子目錄下的明細配置文件。
logrotate的執行由crond服務調用的。
[root@xuegod63 ~]# vim /etc/cron.daily/logrotate   #查看logrotate腳本內容
logrotate程序每天由cron在指定的時間(/etc/crontab)啓動
	日誌是很大的,如果讓日誌無限制的記錄下去 是一件很可怕的事情,日積月累就有幾百兆佔用磁盤的空間,
如果你要找出某一條可用信息:海底撈針
日誌切割:
	當日志達到某個特定的大小,我們將日誌分類,之前的日誌保留一個備份,再產生的日誌創建一個同名的文件保存新的日誌.

16.3.2 實戰演示:

編輯配置文件
[root@xuegod63 log]# vim /etc/logrotate.conf
 
說明:(全局參數)
weekly :	  每週執行回滾,或者說每週執行一次日誌回滾
rotate: 	  表示日誌切分後歷史文件最多保存離現在最近的多少份   [rəʊˈteɪt] 旋轉
create :   指定新創建的文件的權限與所屬主與羣組
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: 以指定的權限創建全新的日誌文件,同時logrotate也會重命名原始日誌文件。
  postrotate/endscript: 在所有其它指令完成後,postrotate和endscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。
/var/lib/logrotate/status中默認記錄logrotate上次輪換日誌文件的時間。

16.3.3 實戰-使用 logrotate 進行ssh日誌分割

定義了ssh日誌存儲在/var/log/sshd的基礎上執行:

[root@xuegod63 ~]# vim /etc/logrotate.d/sshd   #創建一個sshd配置文件,插入以一下內容:
/var/log/sshd.log {
    missingok
    weekly
    create 0600 root root
    minsize 1M
    rotate 3
}
[root@xuegod63 ~]#systemctl restart rsyslog
[root@xuegod63 ~]# logrotate  -d  /etc/logrotate.d/sshd   #預演,不實際輪循
[root@xuegod63 ~]# logrotate -vf /etc/logrotate.d/sshd  #強制輪循,也就是說即使輪循條件沒有滿足,也可以通過加-f強制讓logrotate輪循日誌文件
-v 顯示指令執行過程
-f 強制執行

[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:實戰-使用 logrotate 進行nginx日誌分割

前提已經搭建好nginx,大家瞭解一下,後期講了nginx後你在練習這個
[root@xuegod63 httpd]# vim /etc/logrotate.d/nginx   
/usr/local/nginx/logs/*.log {     #指定日誌文件位置,可用正則匹配
daily                             #調用頻率,有:daily,weekly,monthly可選
rotate 5                          #一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。
sharedscripts                     #所有的日誌文件都輪轉完畢後統一執行一次腳本
postrotate                        #執行命令的開始標誌
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then    #判斷nginx是否啓動
        /usr/local/nginx/sbin/nginx -s reload
        #讓nginx重新加載配置文件,生成新的日誌文件,如果nginx沒啓動不做操作
    fi
endscript  #執行命令的結束標誌
}
沒有切割日誌: 日誌150G了。。。

16.3.4 配置遠程日誌服務器-實現日誌集中的管理

實驗拓撲圖:
在這裏插入圖片描述
server端配置

[root@xuegod63 ~]# vim  /etc/rsyslog.conf   # 	使用TCP協議方式,收集日誌
改:19 #$ModLoad imtcp
    20 #$InputTCPServerRun 514
爲:
19 $ModLoad imtcp
 20 $InputTCPServerRun 514
注:使用UDP協議速度快不保證數據的完整,使用TCP協議可靠.完整
[root@xuegod63 ~]# systemctl  restart  rsyslog   #重新啓動 rsyslog

查看服務監聽的狀態:

[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    #清空防火牆規則 

 client端配置
登錄xuegod64.cn
[root@xuegod63 ~]# vim /etc/rsyslog.conf  #在90行之後,插入
*.*   @@192.168.1.63:514

注: . 所有類別和級別的日誌 ; @@192.168.1.63:514 遠端tcp協議的日誌服務端的IP和端口

重啓rsyslog 服務
[root@xuegod64 ~]# systemctl restart rsyslog.service

查看日誌:

[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color   #動態查看日誌

在客戶端xuegod64進行測試
語法: logger 要模擬發送的日誌

[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 實戰-配置公司內網服務器每天定時自動開關機

實戰場景:爲了節約公司開銷,需要你設置公司的svn版本管理服務器,每天晚上23:00開機,每天早上9:00自動開機。
16.4.1 定時關機

[root@xuegod63 ~]# crontab -e   #寫入以下內容
0 23 * * *   /usr/sbin/shutdown  -h now

16.4.2 定時開機

這個可以通過設置bios(位於主板中的最底層控制系統)來實現,前提是bios支持電源管理。
進入bios,一般是在開機後出現主板畫面是按Delete這個鍵,部分品牌機可能按F2,進入bios設置界面了。然後通過鍵盤上的箭頭選擇Power Management Setup,就進入電源管理設置了。
 
通過回車進入這個設置後,選擇Wake Up Event Setup,回車選擇Press Enter。
 
最後,在這個界面內繼續找到Resume By RTC Alarm,回車選擇一下。
 
繼續回車選擇,將Disabied 更改爲Enabled,然後繼續回車確定。然後再繼續設置時間點和日期。
 
然後選擇日期,並且選擇你需要電腦每天需要在幾點開機,當然,要保證你的主板時間是準確的。
 
假如你需要每天都定時開機,就選擇Every Day,,你如果想要在每天6:45開機,就通過數字鍵輸入06:15:00,最後,一般按F10 進行保存,重啓電腦後生效!希望各位能從本片經驗中學會如何定時開機。

Linux架構師高薪入口:
1.學神IT教育官方網站: http://xuegod.ke.qq.com
2.10年行業資深老鳥MK:QQ2659153446
3.加入Linux技術交流QQ羣:722287089,即可獲得以下福利:
①定期分享免費學習資料與視頻(工具+筆記+拓展實戰)
②10年行業資深老鳥在線答疑:技能+實戰+項目分享+高薪就業
③有機會免費領取Linux雲計算集羣架構師4冊書籍
微信公衆號:
在這裏插入圖片描述

MK老師微信號:
在這裏插入圖片描述
總結:

  • 16.1 計劃任務-at-cron-計劃任務使用方法
  • 16.2 日誌的種類和記錄的方式-自定義ssh服務日誌類型和存儲位置
  • 16.3 實戰-日誌切割-搭建遠程日誌收集服務器
  • 16.4 實戰-配置公司內網服務器每天定時自動開關機
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章