1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<code>我的博客已迁移到xdoujiang.com请去那边和我交流</code>
<code>1、日志结构</code>
<code>/opt/online/</code><code>{123com,abccom}</code><code>/log/online</code><code>[1-9]/[a-z]</code>
<code>2、变量说明</code>
<code>#是否开启压缩功能(0:关闭,1:开启;若关闭压缩功能,则compressdayn无效)</code>
<code>needcompress=1</code>
<code>删除14天以前的日志</code>
<code>deldayn=14</code>
<code>前1天</code>
<code>lastdayn=1</code>
<code>服务类型</code>
<code>allsvrtype=</code><code>"online1 online2 online3"</code>
<code>压缩5天前的日志</code>
<code>compressdayn=5</code>
<code>3、计划任务使用方法:</code>
<code>将该脚本本身copy到</code><code>/opt/online</code><code>下;</code>
<code>crontab</code><code>中配置成:</code>
<code>#30 0 * * * cd /opt/online && chmod +x cleanlog.sh && ./cleanlog.sh >/dev/null 2>&1</code>
<code>cat</code> <code>cleanlog.sh</code>
<code>#!/bin/bash</code>
<code>#-------------------------------------------------- </code>
<code>#Created:2015-05-18</code>
<code>#Author:jimmygong</code>
<code>#Mail:[email protected]</code>
<code>#Function:</code>
<code>#Version:1.0</code>
<code>#--------------------------------------------------</code>
<code>alldomain=</code><code>"123com abccom"</code>
<code>allsubdir=</code><code>"a b c d e f g h i j k l m n o p q r s t u v w x y z"</code>
<code>rootdir=</code><code>"/opt/online"</code>
<code>dirtobedelname=</code><code>"tobedel"</code>
<code>lastday=`</code><code>date</code> <code>-d </code><code>"$lastdayn days ago"</code> <code>+%Y%m%d`</code>
<code>compressday=`</code><code>date</code> <code>-d </code><code>"$compressdayn days ago"</code> <code>+%Y%m%d`</code>
<code>delday=`</code><code>date</code> <code>-d </code><code>"$deldayn days ago"</code> <code>+%Y%m%d`</code>
<code>function</code> <code>cleandir ()</code>
<code>{</code>
<code> </code><code>local</code> <code>ldir=</code><code>"$1"</code>
<code> </code><code>local</code> <code>lfiles=</code>
<code> </code><code>local</code> <code>lfile=</code>
<code> </code><code>lfiles=`</code><code>ls</code> <code>-1 $ldir | </code><code>xargs</code><code>`</code>
<code> </code><code>for</code> <code>lfile </code><code>in</code> <code>$lfiles</code>
<code> </code><code>do</code>
<code> </code><code>rm</code> <code>-f $ldir/$lfile</code>
<code> </code><code>done</code>
<code>}</code>
<code>function</code> <code>compressdir ()</code>
<code> </code><code>local</code> <code>lcompressedtarget=</code><code>"$ldir/$compressday.tar.gz"</code>
<code> </code><code># to prevent duplicate-compress</code>
<code> </code><code>if</code> <code>[[ -f $lcompressedtarget ]]</code>
<code> </code><code>then</code>
<code> </code><code>return</code>
<code> </code><code>fi</code>
<code> </code><code>tar</code> <code>zcvf $ldir.</code><code>tar</code><code>.gz $ldir</code>
<code> </code><code>if</code> <code>[[ $? -</code><code>ne</code> <code>0 ]] ; </code><code>then</code>
<code> </code><code>if</code> <code>[[ -f $ldir.</code><code>tar</code><code>.gz ]] ; </code><code>then</code>
<code> </code><code>mv</code> <code>$ldir.</code><code>tar</code><code>.gz $lcompressedtarget</code>
<code>function</code> <code>handleonelogdir ()</code>
<code> </code><code>local</code> <code>lscandir=</code><code>"$ldir/$dirtobedelname"</code>
<code> </code><code>local</code> <code>lmvdir=</code><code>"$lscandir/$lastday"</code>
<code> </code><code>local</code> <code>lones=</code>
<code> </code><code>local</code> <code>lone=</code>
<code> </code><code>local</code> <code>lonefull=</code>
<code> </code><code>mkdir</code> <code>-p $lscandir</code>
<code> </code><code># remove</code>
<code> </code><code>lones=`</code><code>ls</code> <code>-1 $lscandir | </code><code>grep</code> <code>$delday | </code><code>xargs</code><code>`</code>
<code> </code><code>for</code> <code>lone </code><code>in</code> <code>$lones</code>
<code> </code><code>lonefull=</code><code>"$lscandir/$lone"</code>
<code> </code><code>if</code> <code>[[ -d $lonefull ]] ; </code><code>then</code>
<code> </code><code>cleandir $lonefull</code>
<code> </code><code>rm</code> <code>-rf $lonefull</code>
<code> </code><code>elif</code> <code>[[ -f $lonefull ]] ; </code><code>then</code>
<code> </code><code>rm</code> <code>-f $lonefull</code>
<code> </code><code>fi</code>
<code> </code><code># compress</code>
<code> </code><code>if</code> <code>[[ $needcompress -</code><code>eq</code> <code>1 ]]</code>
<code> </code><code>lones=`</code><code>ls</code> <code>-1 $lscandir | </code><code>grep</code> <code>$compressday | </code><code>xargs</code><code>`</code>
<code> </code><code>for</code> <code>lone </code><code>in</code> <code>$lones</code>
<code> </code><code>do</code>
<code> </code><code>lonefull=</code><code>"$lscandir/$lone"</code>
<code> </code><code>if</code> <code>[[ -d $lonefull ]]</code>
<code> </code><code>then</code>
<code> </code><code>compressdir $lonefull</code>
<code> </code><code>elif</code> <code>[[ -f $lonefull ]]</code>
<code> </code><code>tar</code> <code>zcvf $lonefull.</code><code>tar</code><code>.gz $lonefull</code>
<code> </code><code>fi</code>
<code> </code><code>done</code>
<code> </code><code># move last day's data</code>
<code> </code><code>mkdir</code> <code>-p $lmvdir</code>
<code> </code><code>lones=`</code><code>ls</code> <code>-1 $ldir | </code><code>grep</code> <code>$lastday | </code><code>xargs</code><code>`</code>
<code> </code><code>mv</code> <code>$ldir/$lone $lmvdir</code>
<code>for</code> <code>domain </code><code>in</code> <code>$alldomain</code>
<code>do</code>
<code> </code><code>domaindir=</code><code>"$rootdir/$domain"</code>
<code> </code><code>if</code> <code>[[ ! -d $domaindir ]]</code>
<code> </code><code>continue</code>
<code> </code><code>for</code> <code>svrtp </code><code>in</code> <code>$allsvrtype</code>
<code> </code><code>svrtplogdir=</code><code>"$domaindir/log/$svrtp"</code>
<code> </code><code>if</code> <code>[[ ! -d $svrtplogdir ]]</code>
<code> </code><code>then</code>
<code> </code><code>continue</code>
<code> </code><code>for</code> <code>sub </code><code>in</code> <code>$allsubdir</code>
<code> </code><code>svrtplogsubdir=</code><code>"$svrtplogdir/$sub"</code>
<code> </code><code>if</code> <code>[[ ! -d $svrtplogsubdir ]]</code>
<code> </code><code>continue</code>
<code> </code><code>handleonelogdir </code><code>"$svrtplogsubdir"</code>
<code>done</code>
<code>exit</code> <code>0</code>
本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1652898,如需转载请自行联系原作者