Linux做脚本定时任务(定时清理日志)
无论一些面试问题,还是实际应用,都会用到虚拟机的定时任务。现做定时清理日志日志做一总结。
1、查看/etc/crontab文件。
linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。
cron 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动cron进程,cron进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
2、删除文件命令:
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
实例命令:
find /usr/local/tomcat/logs/ -mtime +30 -name "*.log" -exec rm -rf {} \;
说明:
将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:
find:linux的查找命令,用户查找指定条件的文件;
/opt/soft/log/:想要进行清理的任意目录;
-mtime:标准语句写法;
+30:查找30天前的文件,这里用数字代表天数;
"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} \; :固定写法,一对大括号+空格+\+;
(注意:可添加:0 */1 * * * echo "Have a break now." >> /usr/local/myScript/logs/test.txt 每一个小时往test.txt中插入一条数据,主要用于测试是否执行该脚本。)
3、给脚本添加权限:
4、将脚本添加到定时任务。
vim /var/spool/cron/root
10 1 * * * /usr/local/myScript/cleanlog.sh 每天凌晨1点10分执行
(还可以使用命令直接进入编辑:crontab -e)
查看定时任务:crontab -l
总结:虚拟机的定时任务是作为测试人员必须掌握的内容。
参考:https://blog.csdn.net/qq_39291929/article/details/79054452
https://www.cnblogs.com/think-in-java/p/5712197.html