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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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日志并进行多维度分析。
目录
相关文章
|
3月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
77 7
|
3月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
4月前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
71 7
|
5月前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
385 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
4月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
320 3
|
4月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
180 3
|
5月前
|
Linux
Linux Crontab 查看定时任务启动没
【10月更文挑战第20天】在Linux系统中,crontab用于设置周期性执行的任务。查看当前用户的Crontab任务列表,使用`crontab -l`;查看所有用户任务,使用`sudo crontab -l`或指定用户`sudo crontab -u username -l`。
197 5
|
5月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
106 3
|
22天前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
29 5
图解MySQL【日志】——Redo Log
|
4月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
1209 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板