第七章:日誌與cron自動化任務

日誌類型
auth #安全認證相關信息,pam產生的日誌
authpriv #安全和認證信息(私有的),ssh,ftp等登陸信息的驗證信息
corn #系統定時任務cron和at產生的日誌
kern #內核產生的日誌(不是用戶進程產生的)
lpr #打印產生的日誌
mark(syslog) #-rsyslog服務內部的信息,時間標識
news #新聞組
user #用戶程序產生的相關信息
uucp unix to unix copy #unix主機之間相關通訊
mail #郵件
local0-6 #系統啓動日誌

連接符
. #只要比指定等級高的都記錄下來
.= #只記錄等於指定等級的日誌
.! #代表不等於指定等級的日誌都記錄

日誌等級

優先級					說明
none			不記錄任何日誌消息
emerg			緊急情況,系統不可用(如內核崩潰),一般通知所有用戶
alert			需要立即修復的信息
crit			嚴重級別,組織整個系統或者整個軟件不能正常工作的信息,例如硬盤錯誤。
err				錯誤,一般錯誤信息。組織某個功能或者模塊不能正常工作的信息
warring			警告
notice			具有重要性普通文件的信息。不是錯誤,但是可能需要處理
info			通用性消息,一般用來提供有用信息
debug			調試程序產生的信息,日誌信息最多

rsyslog日誌服務

日誌存放路徑/var/log
/etc/rsyslog.conf 或 /etc/rsyslog.d #rsyslog服務的配置文件和分割文件

/var/log/dmesg #記錄了系統在開機時內核自檢的信息,使用dmesg命令查看

/var/log/btmp #記錄錯誤的登錄日誌,這個文件是二進制文件,使用lastb命令查看

/var/log/lastlog #記錄系統中所有用戶最後一次登陸的日誌,使用lastlog命令查看

/var/log/message #記錄系統重要信息的日誌,記錄Linux系統的絕大多數重要信息,如果系統出現問題,首先要檢查的就是這個日誌文件

/var/run/utmp #永久記錄所有用戶登陸,註銷信息,同時記錄系統的啓動,重啓,關機事件,使用last命令來查看

/var/run/utmp #記錄當前已經登陸的用戶信息,這個文件會隨着用戶的登陸和註銷不斷地變化,要使用w,who,users等命令查看。

注:lastb/last
• -a  把從何處登入系統的主機名稱或IP地址顯示在最後一行。
• -d  將IP地址轉換成主機名稱。
• -f<記錄文件>  指定記錄文件。
• -n<顯示列數>或-<顯示列數>  設置列出名單的顯示列數。
• -R  不顯示登入系統的主機名稱或IP地址。
• -x  顯示系統關機,重新開機,以及執行等級的改變等信息。

修改日誌默認存放路徑

vi /etc/rsyslog.conf #修改messages日誌存放路徑
*.info;mail.none;authpriv.none;cron.none /var/log/messages
ll -d -Z /opt/ #查看安全上下文
chcon -t var_log_t /opt #修改/opt的安全上下文
systemctl restart rsyslog

網絡日誌服務器的配置(將多臺服務器的日誌放到一臺服務器上進行集中管理)

服務器端配置
vi /etc/rsyslog.conf
$Modload imtcp #引用tcp協議模塊
$InputTCPServerRun 514 #指定使用的端口號
$template R,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" #定義模板
.?R #防止日誌二次記錄

losf -i:514 #查看端口是否啓用
ss -tlanp #查看端口是否啓用

客戶端配置
vi /etc/rsyslog.conf
. @@192.168.1.1 #指定本主機產生的所有日誌都傳輸到192.168.1.1的TCP 514端口

vi /etc/bashrc #定義日誌的變量,追蹤誰,在哪做過什麼。
export PROMPT_COMMAND=’ { msg=$(history 1 | { read x y; echo KaTeX parse error: Expected 'EOF', got '}' at position 4: y; }̲);logger "[euid…(whoami)]":(whoami):[pwd]&quot;(who am i):[`pwd`]&quot;msg"; }’

source /etc/bashrc #使變量生效

日誌轉儲
/etc/logrotate.conf #配置文件
/etc/logrotate.d #分割文件

參數定義

1

compress #通過gzip壓縮轉儲以後的日誌
nocompress #不必壓縮時,用這個參數
delaycompress #轉儲的日誌文件到下一次轉儲時才壓縮
nodelaycompress #覆蓋delaycompress選項,轉儲同時壓縮

2

copytruncate #用於還在打開的日誌文件,把當前日誌備份並截斷
nocopytruncate #備份日誌文件但是不截斷

3

create mode owner group #轉儲文件,使用指定的文件模式創建新的
文件(權限 屬主 屬組)
nocreate #不建立新的日誌文件

4

errors address #轉儲時的錯誤信息發送到指定的E-mail地址

5

ifempty #即使是空文件的話也轉儲,這個是logrotate的缺省選項
notifempty #如果是空文件的話,不轉儲

6

maxage count #只轉儲保留多天內的日誌文件,超過則刪除

7

mail address #把轉儲產生的日誌文件發送到指定的E-mail地址
nomail #轉儲時不發送日誌文件

8

missingok #如果日誌不存在則忽略該警告信息

9

olddir directory #轉儲後的日誌文件放到指定的目錄,必須和當前文件在同一個文件系統
noolddir #轉儲後的日誌文件和當前日誌文文件放在同一個目錄下

10

prerotate #在轉儲以前需要執行的命令能放入這個對,這兩個關鍵字必須獨立成行
postrotate #在轉儲以後需要執行的命令

11

daily #指定轉儲週期爲每天
weekly #指定轉儲週期爲每週
monthly #指定轉儲週期爲每月
rotate count #指定日誌文件刪除之前的轉儲次數 0指沒有備份 5 指保留5個備份
size #當日志文件到達指定大小時才能轉儲
dateext #使用日期作爲命名格式
dateformat.%s #配合dateext使用

修改轉儲文件

vi /etc/logrotate.d/mail

/var/log/mail/*.log
{
daily #輪轉週期(多久輪轉一次)
dateext #輪轉下來的文件以時間命名
copytruncate #截斷轉儲文件
nocompress #不壓縮轉儲文件
rotate 3 #保留三份轉儲下來的日誌
ifempty #空日誌文件也轉儲
}

logrotate /etc/logrotate.d/mail #根據條件判斷,轉儲符合條件的日誌文件
logrotate -d /etc/logrotate.d/mail #測試轉儲
logrotate -f /etc/logrotate.d/mail #強制轉儲

注:logrotate自身的日誌通常存放於/var/lib/logrotate/logrotate.status如果處於排障目的,我們想要logrotate記錄到任何指定的文件,我們可以指定像下面這樣從命令行指定。
logrotate -vf -s /var/log/logrotate-status /etc/logrotate.d/log-file

logrotate啓動腳本放在/etc/cron.daily/logrotate

/etc/cron.daily/logrotate默認讓Cron每天執行logrotate一次

corn自動化任務

Linux任務調度的主要工作分爲兩類
1.系統執行的工作:系統週期性所執行的工作,如備份系統數據,清理緩存
2.個人執行的工作:某個用戶定期要做的工作,例如每隔十分鐘檢查郵件服務是否有新信,這些工作可由每個用戶自行設置。

crontab格式共分爲六段,前五段爲時間設定段,第六段爲所需要執行的命令段

第一段 代表分鐘 0-59
第二段 代表小時 0-23
第三段 代表日期 1-31
第四段 代表月份 1-12
第五段 代表星期 0-6(0代表星期日)

/var/spool/cron #cron的自動化任務文件存放路徑
crontab -l #查看自動化任務(-u 指定用戶)
crontab -r #爲當前用戶刪除自動化任務
crontab -e #爲當前用戶編輯自動化任務

配置日誌文件自動輪轉

    • */1 * * /usr/sbin/logrotate /etc/logrotate.d/mail

*/1 #每一
1-5 #從1到5
1 #1
1,15 #1和15

分時日月周

注:
/etc/cron.d #cron分割文件路徑 常用來指定系統任務 crond 會讀取下面腳本。

*/1 * * * * root run-parts /etc/cron.minly #須指定執行的文件夾 通過run-parts 來讀取指定文件夾 執行指定文件夾下的文件。

(通過crontab -l 無法查詢)

cron.minly #每分鐘執行系統任務的文件夾
cron.hourly #每小時
cron.daily #每天
cron.weekly #每週
cron.monthly #每月
(一些服務會往這個下面寫執行腳本 如logrotate)

crontab #主配置文件
cron.deny #該文件中所列出的用戶不允許使用crontab命令

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