crontab 使用介绍

294 阅读3分钟

这是我参与更文挑战的第4天,活动详情查看:更文挑战

一、简介

  • crontab命令用于设置周期性被执行的指令。
  • 该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
  • cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。

二、两种配置方式

  • 方式一:在/etc/crontab下设置,需要指定用户名
    • 1、vim命令进入/etc/crontab
    • 2.在最后一行加上 */1 * * * * root /usr/local/crontab/restart.sh
  • 方式二:使用 crontab -e,不需要指定用户
    • 执行:crontab -e
    • 输入:*/1 * * * * echo 123 >> /usr/sunhb/testFile
    • 出现 crontab: installing new crontab保存成功
    • 在使用crontab -e 编辑的任务在crontab: installing new crontab后没有任何效果
      • 原因(使用crontab -e编写需要等3分钟出现效果)

三、crontab 常用命令

crontab –e : 修改 crontab 文件 (如果文件不存在会自动创建)
crontab –l : 显示 crontab 文件 
crontab -r : 删除 crontab 文件

service crond status  //启动服务
service crond start   //启动服务
service crond stop    //关闭服务
service crond restart //重启服务
service crond reload  //重新载入配置

less /var/log/cron    // 查看cron日志

四、cron常用表达式

来源:/etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


minute: 表示分钟,可以是从0到59之间的任何整数。
hour:   表示小时,可以是从0到23之间的任何整数。
day:    表示日期,可以是从1到31之间的任何整数。
month:  表示月份,可以是从1到12之间的任何整数。
week:   表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
Cron表达式的格式
{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}

0 0/5 * * * ?       每5分钟
0 0 6 * * ?         每天早上6点
0 0 9,13,19 * * ?   每天上午9点,下午1点,晚上7点
0 0 23-7/2,8 * * ?  每天晚上11点到早上7点之间的每两个小时,和早上8点
0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时
0 0 9-21 ? *        MON-SAT 表示996每天的每小时
0 0 7 LW * ?        每月最后一个工作日早上7点
0 0 4 1 1 ?         每年的1月1日早上4点

五、问题汇总

    1. crontab -e 创建任务 报错
    • 现象: crontab: error renaming /var/spool/cron/#tmp.iZ2ze06mxhbe3pa6na2qeuZ.XXXXe3d2RH to /var/spool/cron/root
    • 解决方式:删除/var/spool/cron下的root文件夹,重新创建定时任务即可。

参考链接