theme: condensed-night-purple
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前几篇文章有讲到Linux系统中关于时间的一些操作命令,包括
date
,at
,sleep
等,这篇文章来讲关于时间的最后一个命令,那就是终极大杀器crontab
。
一、基础概念
crontab
其实就是一个命令,一个很强大的命令,用来定时执行程序,所谓定时,就是我们可以重复重复又重复的执行,比如每小时,每分钟,每秒,每天某个时刻等等。
其原理是读取和修改一个名为crontab的文件。这个而文件中包含了需要定时执行的程序的列表,以及重复执行的时刻。
实际上,对于crontab
包含两个命令,一个叫crontab
,这个命令用于修改crontab的文件,另一个叫cron
,用户实际执行定时的程序。
而且需要注意的是对于每一个用户,其都有一个单独的crontab的文件,进行了用户级别的隔离。
二、基础使用
使用前,确保已经安装,如果未安装,采用以下的命令。
```
centos install
$sudo yum install vixie-cron crontabs $chkconfig crond on $service crond start
Debian install
$sudp apt install cron $service cron restart ```
安装完成后可进行简单操作。
```
显示crontab文件
$crontab -l ```
输出内容如下:
因为这是一台新的服务器,我还没有使用过crontab
命令,所以并没有这个文件。
没有这个文件,我们就来创建这个文件。
```
创建,编辑crontab 文件
$crontab -e ```
编辑这个文件的内容,填写的每一条定时任务,都需要遵守下面的语法规则。
```
m h dom mon dow command
x x x x x command ```
- 第一个x:代表分钟(0-59)
- 第二个x:代表小时(0-23)
- 第三个x:代表日(1-31)
- 第四个x:代表月份(1-12)
- 第五个x:代表星期几(0-6,星期日是0)
- command: 那就是需要执行的命令
是不是感觉没那么难,另外需要注意的是,如果前五个x不想填任何值,可以使用星号(*) 填充,其表示任何值。
还有另外一点,如果不想执行某条任务,再前面加 #号注释保存文件即可。
输出命令进入编辑状态
$crontab -e
在文件中输入内容
10 21 * * * touch ~/new_file
然后保存文件,控制台的打印如下。
意思是安装了新的crontab文件。
那如果不想执行这个任务怎么办?第一可以按照上面的方式在任务前加#号处理,或者是直接删除crontab文件。
```
删除crontab文件
$crontab -r ```
这些是crontab
最常见的使用,更多见帮助手册。
三、更多用法
48 * * * * command 0 0 * * 2 command 30 5 1-16 * * command 0 0 * * 1,3,5 command 0 */4 * * * command */5 * * * 1-4 command
那么问题来了,上面的定时任务是如何执行的呢?欢迎留言区留下你的答案!