使用Crontab调度计划任务

Linux计划任务,可以按分钟,小时,天,月,星期几调度任务;

配置文件

有2种类型的配置文件

  • 系统范围的计划任务
  • 单用户的计划任务

Linux的分发版本不同,配置文件的路径会不同;
CentOS用户的计划任务文件在/var/spool/cron目录下;
Ubuntu在/cron/crontabs目录下;

系统范围的计划任务文件,有2个目录

  • /etc/crontab,系统范围的用户任务;
  • /etc/cron.d,系统计划任务,分为hourly,daily,weekly,monthly任务;

只能由系统管理员编辑;

编辑/etc/crontab,格式为

* * * * * <username> command(s)

需要加有任务运行的用户名;
用户计划任务不需用户名;

计划任务的语法
* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

* 代表’每’,如每分钟,每小时等;
, 表示列表,如小时段1,3,5,表示在1点,3点,5点的0分钟执行;
- 表示范围,如星期段1-5,表示在星期1到星期5执行;
/ 表示间隔,如小时段*/4,表示每隔4小时运行(从0点开始),等价于0,4,8,12,16,20;而1-30/10表示1,11,21

预定义宏

内置的时间表示

  • @yearly/@annually 等价于0 0 1 1 *
  • @monthly 等价于0 0 1 * *
  • @weekly 等价于0 0 * * 0
  • @daily 等价于0 0 * * *
  • @hourly 等价于0 * * * *
  • @reboot 重启后执行
crontab命令
crontab -e 编辑用户文件,不存在则创建;
crontab -l 列出文件内容;
crontab -u <username> 编辑某个用户的文件;
crontab -i 删除当前计划任务文件,要确认;
crontab -r 删除当前计划任务文件,不需确认;

会调用系统定义的编辑器,编辑器环境变量为VISUALEDITOR

crontab变量

cron进程会自动设置一些环境变量

  • 默认PATH变量设置为PATH=/usr/bin:/bin;计划任务里的命令如果不在PATH里,可以使用绝对路径;或可以在文件里更改PATH;或在脚本中附加:$PATH
  • HOME变量,默认从用户家目录下运行命令;
  • MALLTO变量,设定接收通知的用户;
限制

系统管理员可以控制哪些用户可以运行计划任务;
/etc/cron.deny/etc/cron.allow 是每行一个用户名;

/etc/cron.deny 默认为空,所有用户都能运行计划任务;
/etc/cron.allow 默认不存在,只有定义的用户可以运行计划任务;

如果2个文件都不存在,只有授权的用户可以运行计划任务;

例子
//# 周1到周5,每天15:00点
0 15 * * 1-5 command

//# 标准错误通知发送给email@example.com
MAILTO=email@example.com
//# 每5分钟,标准输出到/dev/null
*/5 * * * * /path/to/script.sh > /dev/null

//# 周1的15:00
0 15 * * Mon command1 && command2

//# 每天的8点到16点
00 08-16 * * * /path/to/script.sh

//# 每月1号到7号,周1,7点
0 7 1-7 * 1 /path/to/script.sh

//# 每月的1号,15号,9:15
15 9 1,15 * * /path/to/script.sh

//# 设置crontab变量
HOME=/opt
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/usr/bin/zsh
MAILTO=email@example.com

*/1 * * * * command
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值