最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

linux c日志文件定时清除

XAMPP新闻 admin 607浏览 0评论

#任何事情,都有一个过程,坚持一下,再坚持一下。播种和收获,本来就不在一个季节!

在上一篇文章中,介绍了如何在代码中生成以日期为文件名的log文件。

zzzzzs00063

无休止的生成日志文件,最终磁盘肯定会满,所以我们需要做日常清除。

 

首先分析需求:

  1. 找到所需删除的文件
  2. shell脚本执行删除命令
  3. 定期执行shell脚本

我们需要了解:

  1. 一些Linux的shell脚本知识
  2. linux中文件查找命令
  3. 定期执行程序

#1 shell脚本知识

shell变量
1.左边是变量名,右边是变量内容,注意=左右不能直接跟空格。
2.变量名,可以是字母数字组合,但数字不能开头。
name=jiafeng
2name = jiafeng 错误

3变量内容可以用 “” ‘’ 引起,“”中的$保持本意, ''中的则是纯文本

work="/c/hello/server/work/ttt/test"
cd $work

 

#2 linux文件查找命令

# 文件名查找
whereis [-bmsu] 文件名或目录名称

locate [-ir] keyword
-i  忽略大小写的差异 
-r  后面可接正则表达式的显示方式

find [PATH] [option] [action]
1.时间相关 -atime. -ctime. -mtime

-mtime n : n为数字,意义在n天之前的“一天之内”被更改过的文件
-mtime +n :列出在n天前(不含n天本身)被更改过的文件名称
-mtime -n :列出在n天前(含n天本身)被更改过的文件名称
-mtime file :file 为一个存在的文件,列出比file还要新的文件名

例如:
find /var -mtime +4 大于等于五天前的文件名
find /var -mtime -4 小于等于四天内的文件名
find /var -mtime 4  代表4~5那一天的文件名

-exec command :
-exec 后面可再接其他命令来处理到的结果,其中下面的ls -l 就是
find / -perm +7000 -exec ls -l {} \;

{}代表是由find找到的内容,find的结果会被放到{}位置中。
-exec 一直到 \; 是关键字,代表find的额外命令的开始(-exec)到结束(\;)
在这中间的就是find命令内的额外命令。例如上面的“ ls -l {} ”

#3  定期执行程序

crontab --help
crontab: illegal option -- -
crontab: usage error: unrecognized option

usage: crontab [-u user] file
       crontab [-u user] { -e | -l | -r }
其中:
-e : 执行文字编辑器来设定时程表
-r : 删除目前的时程表
-l : 列出目前的时程表

 

#使用文字编辑器来设定时
#f1 f2 f3 f4 f5 program
# .---------------- minute (0 - 59)
# | .-------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

例如:我们想要每周执行一次

#设置定时任务
crontab -e
#接下来会打开vim编辑器,只需按照下面的格式输入即可
# * * * * * user-name command to be executed
* * 1-31/7 * * /home/jiafeng/clearLog.sh
1-31/7则代表,1-31天中每7天执行一次清理命令

#当然除了 - / 还有 , 每个符号都代表一种含义
星号(*):代表所有可能的值
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,在月份上“1,31”代表,一个月的第一天和31天时候
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

zzzzzs000063

具体步骤

#创建定时服务
crontab -e            
#编写服务
* * 1-31/7 * * /home/jiafeng/clearLog.sh
#重启服务
service crond restart  
#列出目前的时间表
crontab -l

将上面的知识汇总的shell脚本

#! /bin/sh 

log_path="/Users/jiajipengzhuanyong/Desktop/CODE/racobit/write/LOG"

#目录存在,删除修改时间为7天前的文件
if  [ -d "${log_path}" ]; then 
echo start delete log 3 days ago...
    #在${log_path}路径下查找所有txt文件,删除三天前的文件
    find "${log_path}"/* -name '*.txt' -mtime +3 -exec rm -rf {} \;
echo end delete log ...  
fi

建议:开始执行的时候,定时时间稍微短点做下测试!

 

Eed 2021/7/7 22:17

转载请注明:XAMPP中文组官网 » linux c日志文件定时清除

您必须 登录 才能发表评论!