通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。今天给大家介绍一下在 Linux VPS 上设置定时任务的方法,通过 Crontab 这个软件,我们可以方便的达到这个目的,方便的设置定时重启、定时关机(关了就没法定时开机了)、定时执行一定的任务等等。通过 Crontab,我们可以完成很多自动化操作,提高我们的 VPS 的运维能力。本文从 Crontab 的安装开始说起,包括安装、使用等教程,以及多举几个例子方便大家学习。
一、Crontab 命令安装教程
首先检查一下 Crontab 是否安装:
crontab -l
如果没报错,就是已经安装好了,一般来说系统都会自带。
如果没安装,进行安装:
CentOS:
yum install vixie-cron yum install crontabs
Ubuntu:
apt-get install cron
二、Crontab 命令使用教程
命令格式:
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
是不是觉得怪复杂的,其实一般来说其实就三个命令:
- 列出所有定时任务:
crontab -l
- 编辑所有定时任务:
crontab -e
- 删除所有定时任务:
crontab -r
使用 crontab -l 可以列出所有的定时任务,一行一个任务,一般来说,每行的格式如下:
分 时 日 月 星期 要运行的命令
- 第 1 列:分钟,取值范围:0~59
- 第 2 列:小时,取值范围:0~23(0表示子夜)
- 第 3 列:日,取值范围:1~31
- 第 4 列:月,取值范围:1~12
- 第 5 列:星期,取值范围:0~7(0 和 7 表示星期天)
- 第 6 列:要运行的命令
对于每一列,有如下几种表示方法:
- *:每单位(比如每分钟,每小时)
- 具体数字:就是具体的时间或者日期
- 取值范围:比如 3 – 5,就是从 3 到 5 的所有值都取
- */数字:比如 */2,就是每 2 分钟或者每 2 天之类的意思
下面看几个例子:
实例 1:每 1 分钟执行一次 myCommand
* * * * * myCommand
实例 2:每小时的第 3 和第 15 分钟执行
3,15 * * * * myCommand
实例 3:在上午 8 点到 11 点的第 3 和第 15 分钟执行
3,15 8-11 * * * myCommand
实例 4:每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行
3,15 8-11 */2 * * myCommand
实例 5:每周一上午 8 点到 11 点的第 3 和第 15 分钟执行
3,15 8-11 * * 1 myCommand
实例 6:每晚的 21:30 重启 smb
30 21 * * * /etc/init.d/smb restart
实例 7:每月 1、10、22 日的 4 : 45 重启 smb
45 4 1,10,22 * * /etc/init.d/smb restart
实例 8:每周六、周日的 1 : 10 重启 smb
10 1 * * 6,0 /etc/init.d/smb restart
实例 9:每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 smb
0,30 18-23 * * * /etc/init.d/smb restart
实例 10:每星期六的晚上 11 : 00 pm 重启 smb
0 23 * * 6 /etc/init.d/smb restart
实例 11:每一小时重启 smb
* */1 * * * /etc/init.d/smb restart
实例 12:晚上 11 点到早上 7 点之间,每隔一小时重启 smb
0 23-7 * * * /etc/init.d/smb restart