Linux定时调度命令 --- crontab

Linux定时调度命令 — crontab

1、基本介绍

1.1 任务调度

​ 指的是系统在某个时间执行的特定命令程序

1.2 任务调度分类

​ 系统工作:需要系统执行一些周而复始的循环工作,如病毒扫描

​ 用户工作:用户需要定期执行某些程序,如数据库的备份

1.3 crontab

​ crontab命令用于设置周期性执行的程序。该命令从标准输入中读取指令,并将指令存储在“/etc/crontab”文件中,供后续的读取和执行。在Linux系统中一般会安装有crontab命令,如果没有的话可以使用包管理工具进行安装。命令如下:

yum -y vixie-cron

yum -y install crontab
1.4 crontab的启动和关闭
service crontab start   # 重启
service crontab stop    # 停止
service crontab restart # 重启
service crontab reload  # 重新载入配置
service crontab status  # 查看crontab服务状态

# 加入开机启动中
chkconfig --level 345 crond on

1.5 任务调度所在的目录
cron.d/   
cron.daily/
cron.deny
cron.hourly/
cron.monthly/
crontab
cron.weekly/
上述目录说明:
cron.d				系统自动定期需要做的任务
cron.daily/		每天执行一次的job
cron.deny			用于控制不让哪些用户使用crontab功能
cron.hourly/	每小时执行一次的任务
cron.monthly/	每月执行一次的任务
crontab				用户配置文件。可以使用crontab -e进行编辑
cron.weekly/	每周执行一次的任务

2、crontab命令

2.1 命令说明
命令格式含义
crontab -e编辑当前用户的定时任务列表
crontab -i以列表的形式查看当前用户的定时任务列表
crontab -r删除当前用户的定时任务列表

crontab命令遵循的编写规则:【* * * * * * 命令】

2.2 占位符说明:
占位符位置占位符说明
第一个占位符【*】-- minute表示分钟,取值范围【0,59】
第二个占位符【*】-- hour表示小时,取值范围【0,23】
第三个占位符【*】-- day表示天,取值范围【1,31】
第四个占位符【*】-- month表示月,取值范围【1,12】
第五个占位符【*】-- week表示周,取之范围【0,7】,0和7都表示周日
第六个占位符【*】-- commond表示要执行的命令,可以是系统命令,也可以是编写的脚步文件
2.3 星号【*】之间的符号说明
符号符号说明示例
星号【*】通配符,可以代表所有的值/
逗号【,】逗号间隔表示指定的列表范围1,2,3,4,5
短斜杠【-】表示一个取值范围“2-7”代表:2,3,4,5,6,7
斜线【/】正斜线表示指定时间的间隔频率“0-23/2”表示每2个小时执行一次。星号【*】可以和【/】一起使用
2.4 常用时间频次举例
命令示例命令含义
00 05 * * *每天凌晨5点执行
20 12 1,10,20 * *每月1,10,20号的12:20执行
10 1 * * 6,0表示每周六、周日的1:10执行
0,30 18-23 * * *18-23点每隔30min执行一次
0 23-7/1 * * *23点到7点每隔1小时执行一次
0 6-12/3 * 10 *每年10月每天的6点到12点每隔3小时执行一次
30 17 * * 1-5每周1到周五每天17:30执行一次
0 */2 * * *每隔2小时执行一次
2.5 输出重定向

crontab执行过程中,如果没有对输出做重定向时,会默认给系统用户发邮件。定时任务会将错误输出到/var/mail/$user中。如果不做清理会占满服务器的根分区,导致机器无法登录。推荐写法:

01 09 * * * cd /opdir/test/ && ./test.sh >>test.log 2>&1 </dev/null &

Linux标准流的表示:

名称类型文件描述符操作列
stdin【标准输入】standard input0< 、<<
stdout【标准输出】standard output1>、>>
stderr【标准错误】Standard error22>、2>>

Tips:

1、忽略输入【nohup】:该命令指定后面的脚本忽略输入

2、后台执行【 】 : 无论在控制台直接执行还是在定时脚本任务中,在某条命令的最后加上【 】:无论在控制台直接执行还是在定时脚本任务中,在某条命令的最后加上【 :无论在控制台直接执行还是在定时脚本任务中,在某条命令的最后加上【】代表当前命令在后台执行,不占用控制台。但是当程序执行时需要与输入命令交互时,该程序会一直等待。如果没有输入就卡死不动。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值