跟高手學習LINUX筆記-16

Linux計劃任務與日誌的管理
本節所講內容:
16.1 計劃任務-at-cron-計劃任務使用方法
16.1.1 計劃任務的應用場景
計劃任務在實際運用很多,現結合日常工作的實際例外列舉幾個:
1、管理的SQL 2008數據庫時結合計劃任務對重要數據庫備份
2、管理的SQL 2008數據庫時結合計劃任務與批處理對規定時間前的備份數據進行刪除
4、管理的WEB服務器會結合計劃任務備份相關數據到其他服務器上
5、管理的WEB服務器會結合計劃任務刪除不需要的訪問日誌數據
等等
由此可見計劃任務在我們的實際運維工作中得到很廣泛的運用
16.1.2 crond 和 atd 說明
crond是定時性的,每隔一定的週期就要重複來做這個事情
atd是突發性的,只是在特定時間執行一次任務,完成後就結束
1)at計劃任務的使用
[root@node-1 ~]# rpm -aq |grep atd
[root@node-1 ~]# yum -y install at
[root@node-1 ~]# systemctl start atd
[root@node-1 ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-03-05 20:27:41 CST; 21s ago
Main PID: 995 (atd)
CGroup: /system.slice/atd.service
└─995 /usr/sbin/atd -f

Mar 05 20:27:41 node-1 systemd[1]: Started Job spooling tools.
Mar 05 20:27:41 node-1 systemd[1]: Starting Job spooling tools...
[root@node-1 ~]# date
Thu Mar 5 20:28:39 CST 2020
[root@node-1 ~]# at 20:28
at> mkdir /opt/test
at> cp /etc/hosts /opt/
at> <EOT>
job 1 at Fri Mar 6 20:28:00 2020
[root@node-1 ~]# at -l
1 Fri Mar 6 20:28:00 2020 a root
[root@node-1 ~]# ll /opt
total 0
檢查at計劃任務運行結果:
[root@node-1 ~]# ll /opt/
total 12
-rw-r--r-- 1 root root 158 Mar 5 20:35 hosts
-rw-r--r-- 1 root root 370 Mar 5 20:35 hosts.allow
-rw-r--r-- 1 root root 460 Mar 5 20:35 hosts.deny
drwxr-xr-x 2 root root 6 Mar 5 20:35 test
刪除at計劃任務
語法: atrm 任務編號
[root@node-1 ~]# at -l
1 Fri Mar 6 20:28:00 2020 a root
[root@node-1 ~]# atrm 1
2)contab定時任務的使用
crond命令定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作
cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。
linux任務調度的工作主要分爲以下兩類:
系統執行的工作:系統週期性所要執行的工作,如更新whatis數據庫 updatedb數據庫,日誌定期切割,收集系統狀態信息,/tmp定期清理
啓動crond服務:
[root@node-1 ~]# systemctl start crond
cron命令參數介紹:
-u 用戶名 #指定用戶名cron服務
-l #列出當前用戶的cron服務的詳細內容
-u 用戶名 -l #列出指定用戶的cron服務的詳細內容
-r #刪除已建立的計劃任務
-e #編輯已建立的計劃任務
如:
crontab -u root -l # root查看自己的cron計劃任務
crontab -u wangtao -r # root想刪除wangtao的cron計劃任務
crontab -e #編輯時的語法
如:定時同步時間的計劃任務
/3 /sbin/ntpdate -u times.aliyun.com &> /dev/null
"五星"的含義:
第一顆"星":分鐘 0-59
第二顆"星":小時 0-23
第三顆"星":日期 1-31
第四顆"星":月份 1-12
第五顆"星":星期 0-7
特殊用法:

  • 取值範圍任何數字
    / 時間的間隔週期 */3 指每隔三分鐘
  • 從數字1到數字2 10-15 從10到15
    , 從,分隔幾個數字中取值 6,12 指6與12
    16.1.3創建計劃任務
    例1:每天凌晨2點1分開始備份數據
    [root@node-1 ~]# crontab -e #添加計劃任務
    /3 /sbin/ntpdate -u times.aliyun.com &> /dev/null
    --每隔3分鐘同步時間
    常見寫法:
    每天晚上2:00 重啓nginx
    0 2
    /usr/local/sbin/nginx -s reload
    每月1、12、25日的4:45重啓apache。
    45 4 1,12,25 systemctl restart httpd
    每月2到14日的3:00重啓mariadb。
    0 3 2-14 systemctl restart mariadb
    每隔兩天的上午8點到11點的第3和第15分鐘重啓apache
    3,15 8-11 /2    systemctl restart httpd
    週一到週五每天晚上 21:15 每隔一小時重啓apache
    15 21
    * 1-5  systemctl restart httpd
    實戰案例:
    每天1:50備份數據庫到/backup/mysqldata
    將備份命令寫入一個腳本backmysql.sh
    每天備份文件名要求格式: 2017-08-19_etc.tar.gz
    在執行計劃任務時,不要輸出任務信息
    存放備份內容的目錄要求只保留7天的數據
    [root@node-1 ~]# vim /root/backmysql.sh
    內容如下:
    #!/bin/bash
    mkdir -p /backup/mysqldata
    /usr/local/mysql/bin/mysqldump -p123456 -u root --lock-tables=false --all-databases | gzip > /backup/mysqldata/mysqldata.$(date +%Y%m%d).sql.gz
    rm -rf /backup/mysqldata/mysqldata.$(date -d '7 days ago' +%Y%m%d).sql.gz

[root@node-1 ~]#crontab -e
0 2 /root/backmysql.sh & > /dev/null
說明:
刪除7天前的備份有好幾種寫法
(1)rm -rf /backup/mysqldata/mysqldata.$(date -d '7 days ago' +%Y%m%d).sql.gz
(2)find /backup/mysqldata -name "mysqldata
.gz" -mtime +7 -exec rm -f {} \;
(3)find /backup/mysqldata -name "mysqldata*.gz" -mtime +7 | xargs rm -f
16.2 日誌的種類和記錄的方式-自定義ssh服務日誌類型和存儲位置
16.2.1 常見日誌文件的作用
系統日誌文件概述:/var/log目錄保管由rsyslog維護的,裏面存放的一些特定於系統和服務的日誌文件
[root@node-1 ~]# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-03-06 19:42:03 CST; 7h left
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 828 (rsyslogd)
CGroup: /system.slice/rsyslog.service
└─828 /usr/sbin/rsyslogd -n

Mar 06 19:42:02 node-1 systemd[1]: Starting System Logging Service...
Mar 06 19:42:03 node-1 rsyslogd[828]: [origin software="rsyslogd" swVersion="8.24.0" x-pid="828" x-...tart
Mar 06 19:42:03 node-1 systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.
日誌文件 用途
/var/log/message 大多數系統日誌消息記錄在此處
/var/log/secure 安全和身份驗證相關的消息和登錄失敗的日誌文件。 ssh遠程連接產生的日誌
/var/log/maillog 與郵件服務器相關的消息日誌文件
/var/log/cron 與定期執行任務相關的日誌文件
/var/log/boot.log 與系統啓動相關的消息記錄
/var/log/dmesg 與系統啓動相關的消息記錄
統計登錄系統失敗的IP與次數
[root@node-1 ~]# grep Failed /var/log/secure | awk '{print $11}'|uniq -c
6 192.168.26.1
1)/var/log/wtmp也是一個二進制文件,記錄每個用戶的登錄次數和持續時間等信息,這個是登錄成功的記錄
[root@node-1 ~]# last -f /var/log/wtmp
root pts/0 192.168.26.1 Wed Mar 4 22:43 - crash (19:14)
.......
2)/var/log/btmp文件是記錄錯誤登錄系統的日誌。如果發現/var/log/btmp日誌文件大於1M,就說明很多人在暴力破解ssh服務,此日誌需要使用lastb程序查看
[root@node-1 ~]# lastb | awk '{ print $3}' | sort | uniq -c | sort -n
1
1 Fri
4 192.168.26.1
此時可以用防火牆也可用hosts.deny來處理
16.2.2在centos7中的rsyslog日誌服務
rhel6-7 ->服務名稱rsyslog ->配置文件 /etc/rsyslog.conf
[root@node-1 ~]# egrep -v "^$|^#" /etc/rsyslog.conf
$ModLoad ommysql
. :ommysql:localhost,Syslog,rsyslog,wangtao
$ModLoad imuxsock # provides support for local system
logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd j
ournal$ModLoad immark # provides --MARK-- message capabili
ty$ModLoad imudp
$UDPServerRun 514
.......
在此不詳細說明每個配置文件的作用,用實戰來實現體現配置文件作用
實戰1:對於主從同步數據庫日誌處理
說明:mysql的log型的同步對數據庫的日誌管理很重要,見過log-bin日誌高達20G的服務器
解決方法:
在【mysqld】下加入以下兩行
expire_logs_days=10 --日誌文件只保留10個
max_binlog_size=50M --日誌文件不超過50M

實戰2:使用logrotate 進行nginx日誌分割
日誌的切割:在linux下的日誌會定期進行滾動增加,我們可以在線對正在進行回滾的日誌進行指定大小的切割。
logrotate配置文件主要有:
【/etc/logrotate.conf 以及 /etc/logrotate.d/ 這個子目錄下的明細配置文件】
logrotate的執行由crond服務調用的。實際生產環境一般把需要切割的日誌配置文件都寫在/etc/logrotate.d/目錄下
[root@node-1 ~]#vim /etc/logrotate.d/nginx
添加下下內容
/usr/local/nginx/logs/*.log { #指定日誌文件位置,可用正則匹配
daily #調用頻率,有:daily,weekly,monthly可選
rotate 7 #一次將存儲7個歸檔日誌。對於第8個歸檔,時間最久的歸檔將被刪除。
sharedscripts #所有的日誌文件都輪轉完畢後統一執行一次腳本
postrotate #執行命令的開始標誌
if [ -f /usr/local/nginx/logs/nginx.pid ];
then #判斷nginx是否啓動
/usr/local/nginx/sbin/nginx -s reload

fi
endscript #執行命令的結束標誌
}
實際部署項目的時候是根據客戶對日誌保存的需求進行調整的,如access.log這個訪問日誌一般保留一個月,error.log一般保留一週。
--對於apache日誌也可以這樣配置,注意文件路徑即可。
實戰3:部署Rsyslog+LogAnalyzer+MySQL中央日誌服務器
鏈接:https://blog.51cto.com/450955/2476250
實戰4:部署ELK日誌服務羣集
這部分是自費購買”實踐哥“學習的,會在以後的博文中寫出來,這裏鏈接此學習的地址:https://edu.51cto.com/course/17248.html
購買了這位老師的7部學習視頻,如redis這個在上個項目中已經實際使用,很有幫助,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章