用Crontab写一个简单的脚本

发表于 2019-12-24  89 次阅读


Crontab,其核心Cron是一个类Unix系统基于时间的任务管理器,当然写脚本也只是Crontab的一个小功能而已(你甚至可以用Crontab发邮件和下载文件),我们这里只讲如何写脚本

首先下载Crontab(如果有就忽略)

apt install crontab
(Debian/Ubuntu)
yum install -y Crontab
(CentOS) 

然后新建的话,一般可以用这个代码

crontab -e

然后如果有多个文件编辑器(如vim,GNU Nano等),Crontab可能会让你选择一个默认的文件编辑器,选自己最上手的即可

如果你的服务器自带Crontab的话,你可能会看到IDC商已经有了几个定时任务,请酌情删除(建议不删除)

然后Crontab的表达式如下

1(分) 2(时/24小时制/0-23) 3(日) 4(月) 5(星期) 文件/文件路径

是不是看不懂?有人要问了:我要的写的是一个任务脚本?为啥表达式要我写文件或者文件路径,我可以直接写任务代码吗?答案是:不行

你要知道一句话,只要你用Linux系统都要知道的一句金玉良言:

Everything is a file (万物皆文件)

简单可以理解为:你的任何任务代码都可以看成一个文件处理,假设说我要写一个重启的定时脚本,当然重启的命令肯定是一个文件,且保存在一个文件夹里面的,那到底是哪个文件夹呢?一般来说是保存在sbin文件的,所以说你要写这个脚本,正确的写法是(举例):

1 2 * * * /sbin/reboot
(表示每天凌晨2点01分重启服务器)

当然在上面的代码中,我们没有设置日期、月份和星期,不设置我们就用*号表示

假设说我们要设置一个早上3点晚上8点的定时任务,代码就是这个样子的:

0 3,20 * * * /sbin/reboot

(这里要注意,我们要表达的是一个完整的时间,所以分那里要写0是必须的)

更多语法教程可以看这个网站:点击进入 (我就难得说了)

然后我们保存即可,保存后2分钟内就会自动运行脚本,如果需要立即执行,可以重启Cron来让脚本立即运行

service cron restart
(Debian/Ubuntu)
service crond restart
(CentOS)

如果要查看现在执行的脚本,可以使运行下面的代码查看:

crontab -l