admin管理员组文章数量:1530517
目的:
定时19点清理两日前的文件
方法一:
利用crontab定时清理日志
#crontab -e
打开调度任务计划,这将打开一个文本编辑器,允许你编辑当前用户的cron作业。
在打开的编辑器中,添加一个新行来定义定时任务。将auto-del-2-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行:
0 19 * * * /export/crontab_sh/auto-del-2-days-ago-log.sh
注:星号*表示任意的月份、日期和星期。
auto-del-2-days-ago-log.sh如下:
#!/bin/sh
RemoveDir =/home/data_dir
find $RemoveDir -mtime +2 -name "*.log" -exec rm -rf{} \;
其中
#*.log" 所查文件类型
#-exec:执行;
#rm -rf:强制删除所有文件;
#{} \; :固定写法,一对大括号+空格+\+;
备注:
crontab命令:
crontab -e:编辑当前用户的定时任务
1) 编辑添加定时任务:10,54 * * * * /home/tomcat/apache-tomcat-8.0.52/cleanlog.sh
(crontab实例说明请参考下文) 定时执行的脚本文件的位置
2)添加好后,按ESC,输入":wq"存盘退出;
3)需要重新启动 crontab让定时任务生效, 命令: service crond restart
crontab -l:查看当前用户的定时任务,出现以下目录说明定时任务已经添加成功
10,54 * * * * /home/tomcat/apache-tomcat-8.0.52/cleanlog.sh
crontab -r:删除当前用户的定时任务
==> 从/var/spool/cron目录中删除用户的crontab文件
==> 如果不指定用户,则默认删除当前用户的crontab文件 crontab –i 在删除用户的crontab文件时给确认提示
附:菜鸟教程的Linux crontab命令
方法二:
#!/bin/sh
RemoveDir =/home/data_dir
dt=`date +%y%m%d -d "2 days ago"`;
dt1=`date +%y%m%d -d "3 days ago"`;
for subdir1 in `ls $Removedir`;
do
if [ "${subdir1}" \< "${dt1}"];
then
rm -rf $RemoveDir/$subdir1
echo `date`"the directory $RemoveDir/$subdir1 has been removed." >>/home/data_dir/CleanUp.log 2>&1
fi
done
for subdir in `ls $Removedir`;
do
if [ "${subdir}" \< "${dt}"];
then
gzip -f $RemoveDir/$subdir/*.txt
rm -rf $RemoveDir/$subdir/*.txt
gzip -f $RemoveDir/$subdir/*.dat
rm -rf $RemoveDir/$subdir/*.dat
echo `date`"the directory $RemoveDir/$subdir has been compressed and removed." >>/home/data_dir/CleanUp.log 2>&1
fi
done
延伸:
清理昨日文件
find /path/to/directory -type f -mtime -1 -exec tar -rf yesterday_files.tar {} +
解释一下这个命令:
find /path/to/directory
:在指定的目录下查找文件。-type f
:只查找普通文件。-mtime -1
:查找修改时间在24小时内的文件(即昨天至今的文件)。-exec tar -rf yesterday_files.tar {} +
:对找到的每个文件执行tar -rf yesterday_files.tar {}
命令,将文件添加到名为yesterday_files.tar
的tar归档文件中。{}
会被find
命令替换为查找到的文件名,+
符号表示对找到的所有文件执行该命令。
请注意,这个命令会递归地查找指定目录下昨天修改的所有文件,并将它们添加到归档文件中。如果需要打包特定类型的文件,可以在find
命令中添加额外的条件,例如使用-name
来匹配文件名。
在运行这些命令之前,请确保您有足够的权限来访问目标目录和文件,以及有足够的存储空间来保存生成的tar文件。
crontab用法
要使用crontab
在每天的18点(即晚上6点)执行某个命令,需要编辑当前用户的crontab
文件。可以使用以下命令编辑crontab
:
crontab -e
然后,在打开的编辑器中添加以下行:
0 18 * * * /path/to/command arg1 arg2
这里的字段含义如下:
0 18 * * *
:这是crontab
的时间格式,分别表示分钟、小时、日期、月份和星期几。/path/to/command arg1 arg2
:这是您想要在指定时间执行的命令及其参数。
其他crontab
案例包括:
- 每天凌晨1点执行命令:
0 1 * * * /path/to/command arg1 arg2
- 每月的第一天凌晨2点执行命令:
0 2 1 * * /path/to/command arg1 arg2
- 每周周一凌晨3点执行命令:
0 3 * * 1 /path/to/command arg1 arg2
- 每个工作日(周一到周五)的下午5点执行命令:
0 17 * * 1-5 /path/to/command arg1 arg2
- 每隔5分钟执行一次命令:
*/5 * * * * /path/to/command arg1 arg2
- 每小时的第15分钟和第45分钟执行命令:
15,45 * * * * /path/to/command arg1 arg2
在保存并退出编辑器后,crontab
会自动加载新的任务。可以使用以下命令来验证crontab
配置:
crontab -l
这将列出当前用户的crontab
任务列表,确保您的任务已经正确添加。
版权声明:本文标题:Linux系统定时清理脚本 | crontab | 定时打包清理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726092157a1055085.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论