其实linux的定时任务和windows的差不多,都是有一个后台程序一直跑着,以分钟为单位去执行定时任务文件的所有任务文件。

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程

对应的就是系统的定时任务文件了,路径为/etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- 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" 15L, 451C

上面是原始文件的内容,可以看到下面已经给我们做了一些解释了,时间粒度为分钟、小时、日期、月、星期,后面是用户,接着就是我们要执行的脚本文件了

那么我们要新增一个定时任务,步骤是什么呢

一、首先创建我们的脚本文件,脚本文件的位置,大家自行找一个地方,起一个意思明显的名字,清理日志,我起的名字为clear_logs.sh,并且创建了一个crontab-file的文件夹,可以将所有需要定时任务执行的脚本文件都放在下面

创建文件夹

mkdir crontab-file

进入文件夹

cd crontab-file

编辑文件内容并保存

vim clear_logs.sh

文件内容

#!/bin/sh
find /home/data/log/ -mtime +20 -name "*.log" -exec rm -rf '{}' \;

~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
~                                                                                                                                                                     
"clear_logs.sh" 3L, 78C

解释一下上面文件的内容,第一行#!/bin/sh,代表文件为脚本文件,下面一行则是我们要执行的脚本,我们来解读一下这条脚本命令
find 查找命令
/home/data/log/ 清除日志的目录(这个路径为绝对路径)
-mtime +20 文件修改时间为最近20天的(这个值为可变的,最近30天,就是30)
-name “*.log” 清除文件名称
-exec rm -rf ‘{}’ ; 这个是固定的写法,执行删除

编辑完之后,记得保存

wq

我们需要将文件的权限改一下,不然无法执行

chmod 755 clear_logs.sh

创建完之后,我们知道这个脚本文件的路径为,/个人选择存放的目录/crontab-file/clear_logs.sh

二、创建完脚本文件后,我们需要去定时任务文件增加一条定时任务
编辑定时任务文件

vim /etc/crontab

点击i,进入可编辑模式,在最后一行,加上我们的定时任务命令,例如每天的零点30分执行一次

30 0 * * * root /个人选择存放的目录/crontab-file/clear_logs.sh

退出保存

wq

然后我们需要重启一下定时任务守护进程来使定时任务文件生效

systemctl restart crond