濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法

在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法

熱門標(biāo)簽:高德地圖標(biāo)注公司需要錢 地圖標(biāo)注員有發(fā)展前景嗎 宜賓銷售外呼系統(tǒng)軟件 四川保險(xiǎn)智能外呼系統(tǒng) 濰坊寒亭400電話辦理多少錢 地圖標(biāo)注能更改嗎 外呼系統(tǒng)全國(guó) 廈門防封電銷電話卡 云南電商智能外呼系統(tǒng)哪家好

日志滾動(dòng)log rotation在 Linux 系統(tǒng)上是再常見不過的一個(gè)功能了,它為系統(tǒng)監(jiān)控和故障排查保留必要的日志內(nèi)容,同時(shí)又防止過多的日志造成單個(gè)日志文件太大。

日志滾動(dòng)的過程是這樣的:在一組日志文件之中,編號(hào)最大的(最舊的)一個(gè)日志文件會(huì)被刪除,其余的日志文件編號(hào)則依次增大并取代較舊的日志文件,而較新的文件則取代它作為當(dāng)前的日志文件。這一個(gè)過程很容易就可以實(shí)現(xiàn)自動(dòng)化,在細(xì)節(jié)上還能按需作出微調(diào)。

使用 logrotate 命令可以手動(dòng)執(zhí)行日志滾動(dòng)的操作。本文將要介紹的就是手動(dòng)進(jìn)行日志滾動(dòng)的方法,以及預(yù)期產(chǎn)生的結(jié)果。

文中出現(xiàn)的示例適用于 Ubuntu 等 Linux 系統(tǒng),對(duì)于其它類型的系統(tǒng),日志文件和配置文件可能會(huì)有所不同,但日志滾動(dòng)的過程是大同小異的。

為什么需要滾動(dòng)日志

一般情況下,無需手動(dòng)旋轉(zhuǎn)日志文件。Linux 系統(tǒng)會(huì)每隔一天(或間隔更長(zhǎng)的時(shí)間)或根據(jù)日志文件的大小自動(dòng)進(jìn)行一次日志滾動(dòng)。如果你需要滾動(dòng)日志以釋放存儲(chǔ)空間,又或者將某一部分日志從當(dāng)前的活動(dòng)中分割出來,這很容易做到,具體要取決于文件滾動(dòng)規(guī)則。

一點(diǎn)背景介紹

在 Linux 系統(tǒng)安裝完成后就已經(jīng)有很多日志文件被納入到日志滾動(dòng)的范圍內(nèi)了。另外,一些應(yīng)用程序在安裝時(shí)也會(huì)為自己產(chǎn)生的日志文件設(shè)置滾動(dòng)規(guī)則。一般來說,日志滾動(dòng)的配置文件會(huì)放置在 /etc/logrotate.d。如果你想了解日志滾動(dòng)的詳細(xì)實(shí)現(xiàn),可以參考這篇以前的文章。

在日志滾動(dòng)的過程中,活動(dòng)日志會(huì)以一個(gè)新名稱命名,例如 log.1,之前被命名為 log.1 的文件則會(huì)被重命名為 log.2,依此類推。在這一組文件中,最舊的日志文件(假如名為 log.7)會(huì)從系統(tǒng)中刪除。日志滾動(dòng)時(shí)文件的命名方式、保留日志文件的數(shù)量等參數(shù)是由 /etc/logrotate.d 目錄中的配置文件決定的,因此你可能會(huì)看到有些日志文件只保留少數(shù)幾次滾動(dòng),而有些日志文件的滾動(dòng)次數(shù)會(huì)到 7 次或更多。

例如 syslog 在經(jīng)過日志滾動(dòng)之后可能會(huì)如下所示(注意,行尾的注釋部分只是說明滾動(dòng)過程是如何對(duì)文件名產(chǎn)生影響的):

$ ls -l /var/log/syslog*
-rw-r----- 1 syslog adm 128674 Mar 10 08:00 /var/log/syslog <== 新文件
-rw-r----- 1 syslog adm 2405968 Mar 9 16:09 /var/log/syslog.1 <== 之前的 syslog
-rw-r----- 1 syslog adm 206451 Mar 9 00:00 /var/log/syslog.2.gz <== 之前的 syslog.1
-rw-r----- 1 syslog adm 216852 Mar 8 00:00 /var/log/syslog.3.gz <== 之前的 syslog.2.gz
-rw-r----- 1 syslog adm 212889 Mar 7 00:00 /var/log/syslog.4.gz <== 之前的 syslog.3.gz
-rw-r----- 1 syslog adm 219106 Mar 6 00:00 /var/log/syslog.5.gz <== 之前的 syslog.4.gz
-rw-r----- 1 syslog adm 218596 Mar 5 00:00 /var/log/syslog.6.gz <== 之前的 syslog.5.gz
-rw-r----- 1 syslog adm 211074 Mar 4 00:00 /var/log/syslog.7.gz <== 之前的 syslog.6.gz

你可能會(huì)發(fā)現(xiàn),除了當(dāng)前活動(dòng)的日志和最新一次滾動(dòng)的日志文件之外,其余的文件都已經(jīng)被壓縮以節(jié)省存儲(chǔ)空間。這樣設(shè)計(jì)的原因是大部分系統(tǒng)管理員都只需要查閱最新的日志文件,其余的日志文件壓縮起來,需要的時(shí)候可以解壓查閱,這是一個(gè)很好的折中方案。

手動(dòng)日志滾動(dòng)

你可以這樣執(zhí)行 logrotate 命令進(jìn)行手動(dòng)日志滾動(dòng):

$ sudo logrotate -f /etc/logrotate.d/rsyslog

值得一提的是,logrotate 命令使用 /etc/logrotate.d/rsyslog 這個(gè)配置文件,并通過了 -f 參數(shù)實(shí)行“強(qiáng)制滾動(dòng)”。因此,整個(gè)過程將會(huì)是:

  • 刪除 syslog.7.gz,
  • 將原來的 syslog.6.gz 命名為 syslog.7.gz,
  • 將原來的 syslog.5.gz 命名為 syslog.6.gz,
  • 將原來的 syslog.4.gz 命名為 syslog.5.gz,
  • 將原來的 syslog.3.gz 命名為 syslog.4.gz,
  • 將原來的 syslog.2.gz 命名為 syslog.3.gz,
  • 將原來的 syslog.1.gz 命名為 syslog.2.gz,
  • 但新的 syslog 文件不一定必須創(chuàng)建。

你可以按照下面的幾條命令執(zhí)行操作,以確保文件的屬主和權(quán)限正確:

$ sudo touch /var/log/syslog
$ sudo chown syslog:adm /var/log/syslog
$ sudo chmod 640 /var/log/syslog

你也可以把以下這一行內(nèi)容添加到 /etc/logrotate.d/rsyslog 當(dāng)中,由 logrotate 來幫你完成上面三條命令的操作:

create 0640 syslog adm

整個(gè)配置文件的內(nèi)容是這樣的:

/var/log/syslog
{
rotate 7
daily
missingok
notifempty
create 0640 syslog adm <==
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

下面是手動(dòng)滾動(dòng)記錄用戶登錄信息的 wtmp 日志的示例。由于 /etc/logrotate.d/wtmp 中有 rotate 2 的配置,因此系統(tǒng)中只保留了兩份 wtmp 日志文件。

滾動(dòng)前:

$ ls -l wtmp*
-rw-r----- 1 root utmp 1152 Mar 12 11:49 wtmp
-rw-r----- 1 root utmp 768 Mar 11 17:04 wtmp.1

執(zhí)行滾動(dòng)命令:

$ sudo logrotate -f /etc/logrotate.d/wtmp

滾動(dòng)后:

$ ls -l /var/log/wtmp*
-rw-r----- 1 root utmp 0 Mar 12 11:52 /var/log/wtmp
-rw-r----- 1 root utmp 1152 Mar 12 11:49 /var/log/wtmp.1
-rw-r----- 1 root adm 99726 Feb 21 07:46 /var/log/wtmp.report

需要知道的是,無論發(fā)生的日志滾動(dòng)是自動(dòng)滾動(dòng)還是手動(dòng)滾動(dòng),最近一次的滾動(dòng)時(shí)間都會(huì)記錄在 logrorate 的狀態(tài)文件中。

$ grep wtmp /var/lib/logrotate/status
"/var/log/wtmp" 2020-3-12-11:52:57

總結(jié)

到此這篇關(guān)于在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的文章就介紹到這了,更多相關(guān)linux 滾動(dòng)日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:德州 回訪 湛江 巴彥淖爾 紅河 滁州 廣安 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法》,本文關(guān)鍵詞  在,Linux,系統(tǒng),中,手動(dòng),滾動(dòng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于在 Linux 系統(tǒng)中手動(dòng)滾動(dòng)日志的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    沙坪坝区| 玛沁县| 高要市| 梨树县| 揭阳市| 安泽县| 林周县| 砚山县| 伊金霍洛旗| 兴和县| 永州市| 金坛市| 临夏市| 浑源县| 蒲城县| 贡嘎县| 大田县| 炉霍县| 满城县| 蕉岭县| 邳州市| 建宁县| 民乐县| 灵石县| 嘉善县| 福建省| 淮阳县| 越西县| 惠州市| 宣化县| 永清县| 静宁县| 长宁县| 金门县| 曲靖市| 白城市| 汤阴县| 瑞安市| 炎陵县| 道孚县| 府谷县|