logrotate 刪除過期的日誌

2021-08-02 20:36:18 字數 2723 閱讀 3135

程式生成的日誌檔案一般需要定期清理,不然既浪費空間又不便於檢視。

linux中有個logrotate的程式可以很方便的配置日誌清理規則(可以根據時間,日誌檔案大小等來進行日誌的清理)。

介紹一下幾種配置模式…

create 模式:

重新命名原先的日誌檔案,並通知程式重新開啟乙個日誌檔案(重啟程式,或者傳送訊號通知應用程式重新開啟乙個日誌檔案)。

logrotate size option: rotate the

logfile when file size reaches a specific limit

if you want to rotate a

logfile (for example, /tmp/output.log) for every 1kb, create

the logrotate.conf as shown below.

$ cat logrotate.conf

/tmp/output.log

this logrotate configuration has following three options:

size 1k – logrotate runs only if

the filesize is equal to (or greater than) this size.

create – rotate the original file

andcreate

thenew

file

with specified permission, user and group.

rotate – limits the

number

oflog

file rotation. so, this would keep only the recent 4 rotated log

files.

copytruncate 模式:

write

thelog information in

the newly created file

after rotating the old log

file.

$ cat logrotate.conf

/tmp/output.log

copytruncate instruct logrotate to creates the

copy

ofthe original file (i.e rotate the original log

file) and truncates the original file

to zero byte size. this helps the respective service that belongs to

that

logfile can write

tothe proper file.

std:

:ofstream ofs;

ofs.open ("test.txt", std:

:ofstream

::out | std:

:ofstream

:或者:

file* logfile

logfile = fopen("abc.log","wa");

這樣的缺點就是程式每一次啟動時,如果已經存在乙個對應的檔案,最新的日誌就會追加到該檔案末尾,而不是清空該日誌檔案然後再寫入。

乙個可用的配置如下:

# 配置需要rotate的檔案,和 size 等

guowe@pc:~/robotwork$ cat /etc/logrotate.d/guowei.log

/home/guowei/robotwork/*.log

# 然後配置每個小時 rotate一下( cp /etc/cron.daily/logrotate /etc/cron.hourly/ ):

guowei@pc:~/robotwork$ cat /etc/cron.hourly/logrotate

#!/bin/sh

# clean non existent log file entries from status file

cd /var/lib/logrotate

test -e status || touch status

head -1 status > status.clean

sed 's/"//g' status | while

read logfile date

do [ -e

"$logfile" ] && echo

"\"$logfile\" $date"

done >> status.clean

mv status.clean status

test -x /usr/sbin/logrotate || exit

0/usr/sbin/logrotate /etc/logrotate.conf

按照上述配置好後,然後執行一下這個,你就會發現你的日誌檔案被rotate了:

sudo run-parts /etc/cron.daily  # or cron.hourly
關於 logrotate的使用有人解釋的更好:

see link:

linux刪除過期檔案

建立刪除檔案指令碼 bin sh 定義所刪除目錄路徑 location find location mtime 365 type f name jmhrms trc exec rm f 或者 bin sh find u01 oracle admin jmhrms bdump mtime 365 ty...

SQL刪除過期檔案

在sql server中,一般是用維護計畫實現刪除過期檔案。不過直接用指令碼也是可以的,而且更靈活。下面介紹三種方法。優點 相容性好 缺點 不能刪除sql server之外建立的檔案,包括rar 備註 維護計畫中的 清理維護 也是呼叫此 擴充套件儲存過程 來刪除檔案。declare olddate ...

linux刪除過期檔案

建立刪除檔案指令碼 bin sh 定義所刪除目錄路徑 location find location mtime 365 type f name jmhrms trc exec rm f 或者 bin sh find u01 oracle admin jmhrms bdump mtime 365 ty...