这是我参与更文挑战的第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点
五、问题汇总
-
- crontab -e 创建任务 报错
- 现象:
crontab: error renaming /var/spool/cron/#tmp.iZ2ze06mxhbe3pa6na2qeuZ.XXXXe3d2RH to /var/spool/cron/root - 解决方式:删除/var/spool/cron下的root文件夹,重新创建定时任务即可。