linux(centOS7)的基本操作(四) 定时任务——crontab

时间:2022-08-21 07:53:13

概述

对于Java开发人员,定时任务并不陌生,无非是让系统在特定时间执行特定的命令或程序。例如spring提供的@Scheduled注解、OpenSymphony提供的quartz框架,都可以实现定时任务。在操作系统这个层面,linux也提供了相应的解决方案——crontab命令。

 

crontab命令的格式

crontab [-e] [-l] [-r]

后面的三个可选项必须选择一项,且只能选择一项。

-e:编辑定时任务;

-l:以列表形式显示当前所有的定时任务;

-r:删除当前所有的定时任务。

其中,crontab -e会弹出vi编辑器,可以以两种方式写入定时任务:

1. cron表达式 + 命令

2. cron表达式 + shell脚本文件

这里的cron表达式跟https://www.cnblogs.com/dubhlinn/p/10740838.html一文提到的略有不同,最小单位为分钟,且不用问号(?),只能手动去避免日期和星期的冲突。

 

直接编辑命令方式建立定时任务

使用步骤

1. 执行 crontab -e

2. 在弹出的vi编辑器中写入:cron表达式、命令,中间以空格间隔

3. 保存退出

示例

例如,每天午夜23点将当前目录下的内容追加到/home/dubhlinn/content.log文件中

0 23 * * * ls -l >> /home/dubhlinn/content.log

 

shell脚本保存命令方式建立定时任务

使用步骤

1. 创建shell脚本文件(.sh),在其中写入命令

2. 对shell脚本文件赋予"执行"权限

3. 执行 crontab -e

4. 在弹出的编辑器中写入:cron表达式、shell脚本文件的绝对路径,中间以空格间隔

5. 保存退出

示例

例如每隔15分钟,将当前日期时间追加到/home/dubhlinn/time.log文件中。

首先,在家目录/home/dubhlinn下创建timer.sh文件,在其中写入:date >> /home/dubhlinn/time.log。

然后,对刚创建的shell脚本文件,给所有者赋予执行权限:chmod u+x timer.sh。

最后,执行crontab -e,并在编辑器中写入:*/15 * * * * /home/dubhlinn/timer.sh。