linux基礎篇(七):基於Redhat7系統的系統日誌與延時任務
系統日誌
配置檔案: /etc/rsyslog.conf
系統日誌是記錄系統中硬體、軟體和系統問題的資訊,同時還可以監視系統中發生的事件。使用者可以通過它來檢查錯誤發生的原因,或者尋找受到攻擊時攻擊者留下的痕跡。
常用日誌型別與日誌級別
型別
auth 使用者登陸日誌(pam產生的日誌) authpriv 服務認證日誌(sshd認證) kern 核心日誌 corn 定時任務日誌 lpr 印表機日誌 mail 郵件日誌 news 新聞 user 使用者相關程式日誌 local 1-7 使用者自定義日誌
級別
debug 系統除錯資訊
info 常規資訊
warning 警告資訊
err 報錯(級別低,阻止了某個軟體不能正常工作)
crit 報錯(級別高,阻止了整個軟體或整個系統不能正常工作)
alert 需要立即修改資訊
emerg 核心崩潰
none 不採集任何日誌資訊
格式
日誌型別.日誌級別 日誌存放檔案
例如:
auth.debug 檔名稱 ##使用者登陸日誌的除錯資訊 auth.* 檔名稱 ##使用者登陸日誌的所有資訊 *.* 檔名稱 ##所有日誌型別的所有級別的資訊
vim /etc/rsyslog.conf
auth.debug /var/log/westos ###將使用者登入日誌的除錯資訊儲存在/var/log/westos檔案中
. /var/log/log.all ####將所有型別日誌的所有級別資訊儲存在/var/log/log.all檔案中
系統常用日誌
/var/log/messages 所有日誌級別的常規資訊(不包含郵件,服務認證,定時任務)
/var/log/maillog 郵件日誌
/var/log/secure 服務認證日誌
/var/log/cron 定時任務日誌
遠端日誌同步
需要兩臺節點
節點一:日誌傳送方server1 172.25.66.11
節點二:日誌接收方server2 172.25.66.12
在日誌傳送方
vim /etc/rsyslog.conf
. @172.25.66.12 #日誌接受方地址
systemctl restart rsyslog
在日誌接收方
vim /etc/rsyslog.conf
編輯第15、16行
15 $ModLoad imudp 日誌接受程式
16 $UDPServerRun 514 接收程式介面
systemctrl restart rsyslog.srvice
systemctrl stop firewalld 關閉防火牆
systemctrl disabl firewalld 關閉防火牆開機自啟動
測試:
清空日誌接受方的日誌記錄 > /var/log/message
在日誌傳送方:
在日誌接受方可以檢視到日誌傳送方的日誌
cat /var/log/message
定義日誌採集格式
vim /etc/rsyslog.conf
$template 格式名稱(自定義),"日誌採集格式"
*.info;mail.none;authpriv.none;cron.none /var/log/messages;westos
$template westos,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% 日誌生成時間
%FROMHOST-IP% 日誌來源主機的ip
%syslogtag% 日誌生成程式
%msg% 日誌內容
systemctl restart rsyslog
測試:
journalctl
journalctl ##日誌檢視工具,直接檢視記憶體中的日誌
journalctl -n 3 檢視最新三條日誌
journalctl -p err 檢視報錯日誌
journalctl -f 日誌監控 用ctrl+c 結束監控
journalctl --since --until 檢視一個時間區間的日誌
journalctl -o verbose 產看日誌詳細引數
對systemd-journald管理
預設此程式只負責對日誌進行檢視而不對日誌進行儲存和採集,那麼在關機後在開機,對日誌進行檢視,只能檢視到開機後的日誌,系統之前的日誌是因為儲存在記憶體中的,所以關機後就被清空了,那麼在開機是用journalctl看不到的
如何讓systemd-journald儲存日誌到硬碟中
(1)mkdir /var/log/journal
(2)chgrp systemd-journal /var/log/journal
(3)chmod 2755 /var/log/journal
(4)killall -1 systemd-journald
測試:
journalctl 重啟之前檢視日誌時間
date 檢視當前時間
reboot 重啟
journalctl 重啟後檢視日誌,看重啟之前的日誌是否存在,存在即為正確
系統中的at延時任務
at類似列印程序,會把任務放到/var/spool/at目錄中,到指定時間執行它 。at命令相當於另一個shell,執行at time命令時,它傳送一個個命令,可以輸入任意命令或者程式。
AT Time中的時間表示方法
-----------------------------------------------------------------------
時 間 例子 說明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任務在5分鐘後執行
Hour at now + 1 hour 任務在1小時後執行
Days at now + 3 days 任務在3天后執行
Weeks at now + 2 weeks 任務在兩週後執行
Fixed at midnight 任務在午夜執行
Fixed at 10:30pm 任務在晚上10點30分
Fixed at 23:59 12/31/2018 任務在2018年12月31號23點59分
引數詳解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程式/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入 網路應用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定
舉例:
at now+1min
at> touch /mnt/file{1…5}
ctrl+d
五分鐘之後,在/mnt目錄建立file1-file5五個檔案
at黑白名單
/etc/at.deny ##黑名單
/etc/at.allow ##白名單本身不存在,建立後黑名單失效,除了超級使用者外的其他使用者都不能使用at作業,除非將使用者加入白名單
vim /etc/at.deny 將指定使用者加入黑名單
vim /etc/at.allow 將指定使用者加入白名單