您好,登錄后才能下訂單哦!
這篇文章主要介紹了Linux日志處理命令logrotate怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Linux使用某些軟件的時候會產生日志文件,而這些軟件本身對日志不進行分割或者壓縮處理,久而久之會導致日志文件異常巨大,影響機器性能,配置不高的VPS上尤為嚴重。而logrotate就是管理這些日志文件的神器,可以對單個日志文件或者某個目錄下的文件按時間/大小進行切割,壓縮操作;指定日志保存數量;還可以在切割之后運行自定義命令。
logrotate
實用程序在管理日志方面非常出色。它可以輪轉日志、壓縮日志、通過電子郵件發送日志、刪除日志、歸檔日志,并在你需要時開始記錄最新的。
運行 logrotate
非常簡單——只需要運行 logrotate -vs state-file config-file
。在上面的命令中,v
選項開啟詳細模式,s
指定一個狀態文件,最后的 config-file
是配置文件,你可以指定需要做什么。
讓我們看看在我們的系統上靜默運行的 logrotate
配置,它管理我們在 /var/log
目錄中找到的大量日志。查看該目錄中的當前文件。你是否看到很多 *.[number].gz
文件?這就是 logrotate
正在做的。你可以在 /etc/logrotate.d/rsyslog
下找到此配置文件。我的配置文件如下:
/var/log/syslog{ rotate 7 daily missingok notifempty delaycompress compress postrotate reload rsyslog > /dev/null 2>&1 || true endscript}/var/log/mail.info/var/log/mail.warn/var/log/mail.err/var/log/mail.log/var/log/daemon.log/var/log/kern.log/var/log/auth.log/var/log/user.log/var/log/lpr.log/var/log/cron.log/var/log/debug/var/log/messages{ rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog > /dev/null 2>&1 || true endscript}
該文件首先定義了輪轉 /var/log/syslog
文件的說明,這些說明包含在后面的花括號中。以下是它們的含義:
rotate 7
: 保留最近 7 次輪轉的日志。然后開始刪除超出的。daily
: 每天輪轉日志,與 rotate 7
一起使用,這意味著日志將保留過去 7 天。其它選項是每周、每月、每年。還有一個大小參數,如果日志文件的大小增加超過指定的限制(例如,大小 10k、大小 10M、大小 10G 等),則將輪轉日志文件。如果未指定任何內容,日志將在運行 logrotate
時輪轉。你甚至可以在 cron 中運行 logrotate
以便在更具體的時間間隔內使用它。missingok
: 如果日志文件缺失也沒關系。不要驚慌。notifempty
: 日志文件為空時不輪轉。compress
: 開啟壓縮,使用 nocompress
關閉它。delaycompress
: 如果壓縮已打開,則將壓縮延遲到下一次輪轉。這允許至少存在一個輪轉但未壓縮的文件。如果你希望昨天的日志保持未壓縮以便進行故障排除,那么此配置會很有用。如果某些程序在重新啟動/重新加載之前可能仍然寫入舊文件,這也很有幫助,例如 Apache。postrotate/endscript
: 輪轉后運行此部分中的腳本。有助于做清理工作。還有一個 prerotate/endscript
用于在輪轉開始之前執行操作。你能弄清楚下一節對上面配置中提到的所有文件做了什么嗎?第二節中唯一多出的參數是 sharedscripts
,它告訴 logrotate
在所有日志輪轉完成之前不要運行 postrotate/endscript
中的部分。它可以防止腳本在每一次輪轉時執行,只在最后一次輪轉完成時執行。
我使用下面的配置來處理我系統上的 Nginx
的訪問和錯誤日志。
/var/log/nginx/access.log/var/log/nginx/error.log { size 1 missingok notifempty create 544 www-data adm rotate 30 compress delaycompress dateext dateformat -%Y-%m-%d-%s sharedscripts extension .log postrotate service nginx reload endscript}
上面的腳本可以使用如下命令運行:
logrotate -vs state-file /tmp/logrotate
第一次運行該命令會給出以下輸出:
reading config file /tmp/logrotateextension is now .logHandling 1 logsrotating pattern: /var/log/nginx/access.log/var/log/nginx/error.log 1 bytes (30 rotations)empty log files are not rotated, old logs are removedconsidering log /var/log/nginx/access.log log needs rotatingconsidering log /var/log/nginx/error.log log does not need rotatingrotating log /var/log/nginx/access.log, log->rotateCount is 30Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'dateext suffix '-2021-08-27-1485508250'glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'glob finding logs to compress failedglob finding old rotated logs failedrenaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508250.logcreating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4running postrotate script* Reloading nginx configuration nginx
第二次運行它:
reading config file /tmp/logrotateextension is now .logHandling 1 logsrotating pattern: /var/log/nginx/access.log/var/log/nginx/error.log 1 bytes (30 rotations)empty log files are not rotated, old logs are removedconsidering log /var/log/nginx/access.log log needs rotatingconsidering log /var/log/nginx/error.log log does not need rotatingrotating log /var/log/nginx/access.log, log->rotateCount is 30Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'dateext suffix '-2021-08-27-1485508280'glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'compressing log with: /bin/gziprenaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508280.logcreating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4running postrotate script* Reloading nginx configuration nginx
第三次運行它:
reading config file /tmp/logrotateextension is now .logHandling 1 logsrotating pattern: /var/log/nginx/access.log/var/log/nginx/error.log 1 bytes (30 rotations)empty log files are not rotated, old logs are removedconsidering log /var/log/nginx/access.log log needs rotatingconsidering log /var/log/nginx/error.log log does not need rotatingrotating log /var/log/nginx/access.log, log->rotateCount is 30Converted ' -%Y-%m-%d-%s' -> '-%Y-%m-%d-%s'dateext suffix '-2021-08-27-1485508316'glob pattern '-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'compressing log with: /bin/gziprenaming /var/log/nginx/access.log to /var/log/nginx/access-2021-08-27-1485508316.logcreating new /var/log/nginx/access.log mode = 0544 uid = 33 gid = 4running postrotate script* Reloading nginx configuration nginx
狀態文件的內容如下所示:
logrotate state -- version 2"/var/log/nginx/error.log" 2021-08-27-9:0:0"/var/log/nginx/access.log" 2021-08-27-9:11:56
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux日志處理命令logrotate怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。