Linux 下使用crontab 定时打包日志并删除已被打包的日志

简介: f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c` #获取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路径)

crontab是和用户相关的,每个用户有自己对应的crontab 。


cron是Linux下的定时执行工具,以下是重启/关闭等等的命令


#/sbin/service crond start    //启动服务
#/sbin/service crond stop     //关闭服务
#/sbin/service crond restart  //重启服务
#/sbin/service crond reload   //重新载入配置
#/sbin/service crond status  //查看服务状态


cron服务提供 crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:


crontab -u 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l 列出某个用户cron服务的详细内容

crontab -r 删除某个用户的cron服务

crontab -e 编辑某个用户的cron服务


设置定时的参数图:



crontab特殊的符号说明:


  • “*” 代表所有的取值范围内的数字。特别要注意哦!
  • “/” 代表每的意思,如"*/5"表示每5个单位
  • “-” 代表从某个数字到某个数字
  • “,” 分散的数字

例如:


30 21 * * * 表示每晚的21:30

45 4 1,10,22 * * 表示每月1、10、22日的4 : 45


现在是正式代码, 压缩上一个月的日志,并把其删除。


在logs文件夹的同级目录下新建一个 .sh文件 例如:logzip.sh


内容:


echo "Please wait..."  

m=`date -d "1 months ago" +%Y-%m`    #获取上个月的yyyy-mm格式的日期字符串

m2=`date -d "1 months ago" +%Y%m`

index=0

f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c`  #获取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路径)

for name in $f
do
        n=`expr "$name" : '.*\([0-9]\{4\}-[0-9]\{2\}\).*'`    #从文件名称中提取yyyy-mm格式日期
        if [ "$n" != "" ] && [ "$n" = "$m" ]
        then
                f[$index]="/home/hls/apache-tomcat-7.0.61/logs/$name"    #logs文件夹下符合要求的文件名称放入数组
        else
                f[$index]=""
        fi
        (( index ++ ))
done
echo "$f"
str=${f[@]}
if [ "${#str}" -gt 0 ]       #如果大于 0
then
zip /home/hls/apache-tomcat-7.0.61/logs/$m2.zip  $str    #压缩数组中的文件为yyyymm.zip文件,打包放在logs下
else
echo "No files found."
exit 0
fi
echo "$m2.zip maked, now delete old files."
rm -fr $str        #删除已被打包文件
echo "done."
exit 0


使用方法:


执行 crontab -e 编辑当前用户定时任务,进入编辑页面,点击 o ,输入


0 0 1 * * /home/hls/apache-tomcat-7.0.61/logzip.sh >> /home/hls/apache-tomcat-7.0.61/crontablog.log 2>&1

按esc退出编辑 然后 :wq 保存退出。这样就在crontab里设置了定时任务(每月一号凌晨执行logzip.sh,并把执行文件中的日志输出在crontablog.log中)


注意:windows下面创建的文件回车符和linux/unix下面的回车符不一样,可能会导致脚本无法执行

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
21天前
|
Linux 应用服务中间件 PHP
性能工具之linux常见日志统计分析命令
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的。
58 1
|
1月前
|
运维 监控 安全
在Linux系统中,认证日志
Linux系统中的认证日志对于安全监控和故障排查至关重要,常见的日志文件包括:`/var/log/auth.log`(Debian、Ubuntu)、`/var/log/secure`(RPM发行版)、`/var/log/lastlog`、`/var/log/faillog`、`/var/log/wtmp`和`/var/run/utmp`。这些文件记录登录尝试、失败、当前用户等信息。日志管理可通过文本编辑器、日志查看工具或`rsyslog`、`syslog-ng`等工具进行。注意日志位置可能因发行版和配置差异而变化,应确保日志文件的安全访问,并定期轮转归档以保护敏感信息和节省空间。
26 3
|
8天前
|
存储 监控 安全
Linux ContOS7 日志管理(rsyslog)
Linux ContOS7 日志管理(rsyslog)
|
16天前
|
监控 Linux 开发者
【专栏】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件
【4月更文挑战第28天】`head`命令是Linux系统中用于快速查看文件开头内容的工具,常用于处理日志文件。基本用法包括指定查看行数(如`head -n 10 file.txt`)和与其他命令(如`grep`)结合使用。高级用法涉及动态查看日志、过滤内容、管道操作及在脚本中的应用。实际应用案例包括监控系统日志、排查错误和分析应用日志。使用时注意文件存在性、行数选择及权限问题。熟练掌握head命令能提升工作效率,结合其他工具可实现更多功能,助力Linux用户提升技能。
|
28天前
|
Linux 调度
Linux定时任务调度--crontab与at
Linux定时任务调度--crontab与at
35 0
|
29天前
|
SQL 监控 安全
Linux&Windows 日志分析 陇剑杯 CTF
Linux&Windows 日志分析 陇剑杯 CTF
|
1月前
|
Linux
linux centos7查看linux的登录日志
linux centos7查看linux的登录日志
40 2
linux centos7查看linux的登录日志
|
1月前
|
Linux
Linux Crontab 查看定时任务启动没
Linux Crontab 查看定时任务启动没
21 0
Linux Crontab 查看定时任务启动没
|
7天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
16 1
|
7天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。