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 將指定使用者加入白名單