使用 crontab 命令设定定时任务

一、crontab命令是干什么的?

crontab命令是用来定期执行程序的命令,Linux会默认开启此命令。我们通常使用此命令为用户设置定时任务。

Linux任务调度的工作主要分为:

  • 系统执行的工作:系统需要周期性的执行的工作,如数据备份、缓存清理等。
  • 个人执行的工作:某个用户需要定期指定的工作,如每隔10分钟检查邮件服务器是否有新信息,这类工作可以由每个用户自行设置。

二、语法

crontab [ -u user ] filecrontab [-u user] { -l | -r | -e }

  • -u user 指定执行该定时任务的用户,此参数具有权限要求,一般用户无法为其他用户设定定时任务,只有如root等有权限的用户才可使用此参数。如果不指定此参数,代表为自己设定定时任务。
  • -e 编辑定时任务,内定的文字编辑器是VI。如果想使用其他的文字编辑器,需要重新配置VISUAL环境变量。
  • -r 删除当前所有的定时任务,若只需要删除一项,需要使用-e编辑
  • -l 查看当前所有的定时任务

三、定时任务的编写格式

使用 crontab 命令设定定时任务_第1张图片
分、时、日、月、周 均可以

  • 用*来表示,表示每一分、每一个小时、每一日、每个月、每一周;

  • 用a-b来表示,表示a分钟到b分钟,a点到b点,a日到b日,a月到b月,周a到周b;

  • 用*/n来表示,表示每隔n分钟,每隔n小时,每隔n天,每隔n月,每隔n周;

  • 用a-b/n来表示,表示在a-b分钟内每隔n分钟,在a点-b点每隔n小时,在a日到b日每隔n日,在周a到周b执行,每n周循环一次。

  • 用a,b,c,d等来表示,表示固定的分、时、日、月、周。

  • 分的取值范围为:0~59

  • 时的取值范围为:0~23(0代表凌晨0点)

  • 日的取值范围为:1~31

  • 月的取值范围为:1~12

  • 周的取值范围为:0~7(0和7都代表周日)

举例:

  • 每分钟记录一下时间
* * * * * date >> ~/a.txt
  • 每小时的第10分钟记录一下时间
10 * * * * date >> ~/a.txt
  • 每两天的上午8点到11点的第3到第15分钟记录一下时间
3,15  8-11 */2 * * date >> ~/a.txt

四、具体怎么设定一个定时任务呢?

给自己设定定时任务有两种方式:
(一)通过crontab文件管理定时任务

  1. 执行crontab -e 编辑定时任务,如下图,定时任务如下。
    使用 crontab 命令设定定时任务_第2张图片
  2. 第一次保存后,会提示你新建一个crontab文件,这个文件里的内容就是我们的定时任务。crontab -l 列出来的也是这个文件的内容。
    在这里插入图片描述
  3. 保存后会自动执行。
  4. 查看结果:
    使用 crontab 命令设定定时任务_第3张图片

(二)通过其他文件管理定时任务

  • 新建一个文件test_crond,按照定时任务编写格式编写定时任务并保存。
    新建文件并编辑文件
    定时任务的命令

  • 执行crontab test_crond 即可。

  • 查看结果,如下图,红框中为本次任务的执行结果。
    使用 crontab 命令设定定时任务_第4张图片
    给其他用户设定定时任务:

  • 此操作要求我们拥有足够的权限才可以完成,如拥有root身份。

  • 在设定定时任务时,在crontab后指定用户就可以了,比如,我们要给用户pq设置定时任务:crontab -u pq -e

五、注意事项

1.每条定时任务执行完毕后,系统会自动将任务的输出发送给当前系统用户。时间长了,就会占用特别大的空间,所以我们在将将输出做处理(比如将输出追加到特定的日志文件中),并在定时任务后添加重定向处理命令:>/dev/null 2>&1
2.不要随便运行crontab -r命令。这个命令会将/var/spool/cron中该用户的crontab文件删除。一旦删除,此用户的所有定时任务就都不存在了。

你可能感兴趣的:(Linux)