程式生成的日誌檔案一般需要定期清理,不然既浪費空間又不便於檢視。
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...