今天让我写一个删除服务器项目日志的脚本并且每天定时跑。于是从网上借鉴了些经验,具体操作如下。
借鉴地址:http://www.cnblogs.com/peida/archive/2013/03/25/2980121.html
一、常用的命令
1、查询命令 find
在删除日志前,首先要做的是查找日志所在的目录。 命令常用格式:find 目录path -name "需要匹配的文件"
示例:find /gvat/log/ -name "*.log" //表示查询/gvat/log/目录下的所有带log后缀的文件
2、删除命令 rm
当找到需要的删除的文件时,可执行删除命令 命令常用格式 rm -rf 文件名/目录名
示例:rm -rf user.admin.log //表示删除user.admin.log文件 其中
注:rf这两个参数分别表示的意思是 r 表示递归删除当前目录和所有下级目录的文件 f表示同意删除操作,不加这个参数 每次删除时都会提示并让你确认是否删除文件
3、文件编辑命令 vi
当需要对文件进行编辑时,可使用vi 命令进入,输入i 可进入编辑状态。
格式: vi 文件名 //注:如果文件不存在 会自动创建一个
4、文件权限修改命令 chmod
当需要对文件的操作权限进行修改时,可以使用chmod命令进行修改。
示例:chmod +w 文件名 //给文件增加写入权限
注:w 表示写入 r 表示读取 x 表示执行
二、编写删除日志的脚本
1、新建并打开一个脚本文件
vi /gvat/auto-delete-log.sh //脚本的路径与名字可以随意,根据自己的实际情况而定
2、将命令写入脚本可以更方便的进行操作,特别是在命令比较多的情况下。具体的删除日志脚本内容如下:
find /gvat/log -mtime +7 -name "*.log" -exec rm -rf {} \;
上面的命令用于删除文件,由于我们的每天的日志有一个时间文件夹,因此需要删除文件夹及里面的日志文件,内容如下:
find /gvat/log -mtime +7 -exec rm -rf {} \;
注:-mtime +7 表示查询7天之前的文件
-exec 是shell脚本中的调用并执行exec后面的指令的命令
{} 表示文件名,即前面find命令查询出来的所有文件
\; 这个是对分号的转义,因为不同系统直接使用分号意义不一样,所以在这里用转义符号表示这里的分号只是普通分号
3、给脚本增加可执行的权限
chmod +x /gvat/auto-delete-log.sh
三、加入定时任务
为了不每天手动执行脚本,我们可以将脚本加入到定时任务中,这样系统每天就会自动执行我们的脚本
定时任务配置命令如下:
crontab -e
使用这个命令可以打开定时任务的编辑,和编辑文件一样在定时任务配置中输入以下内容
00 22 * * * /gvat/auto-delete-log.sh
注:00 22 表示晚上22点整
另外定时执行脚本时会有执行内容的输出,如果不需要保存我们的定时任务输出执行的内容可以在命令后增加以下内容:
00 22 * * * /gvat/auto-delete-log.sh >/dev/null 2>&1
说明: > 表示重定向
/dev/null 这是系统的一个空设备,任何东西进入这个设备后将在系统中不存在
2 表示标准错误输出
&表示等同于
整个意思可以理解为,将删除日志脚本的输出内容重定向输出到空设备中,产生的错误日志一样输出到空设备中
以上就是整个过程,不足之处请多指正