Ubuntu定时任务Crontab

说明:

cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业
cron启动后,它会读取它的 所有配置文件
(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件)

crontab格式:

1
2
3
4
5
6
7
8
9
*    *    *    *    *    [user] [command]
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (Sunday=0 or 7)
| | | +---------- 月份 (1 - 12)
| | +--------------- 几号 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

控制命令:

启动:service cron start
停止:service cron stop
状态:service cron status
重启:service cron restart
重新载入配置:service cron reload

crontab命令:

格式:
crontab [ -u user ] [ -i ] { -e | -l | -r }

crontab -u          设定某个用户的cron服务
crontab -l          列出某个用户的所有cron服务的详细内容
crontab -r          删除某个用户的所有cron服务
crontab -e          编辑某个用户的cron服务

新增/删除任务示例:

1.编辑任务

会在/var/spool/cron/crontabs/目录下编辑一个当前用户名的文件
(如:/var/spool/cron/crontabs/root)

crontab -e

2.添加命令/删除命令

每年每个月的3号到6号的8点每隔3分钟或5分钟
执行date命令并将结果保存至文件/tmp/testCron.txt中
(,表示并列 /表示频率 -表示范围)

*/3,*/5 8 3-6 * * date >> /tmp/testCron.txt

3.重新载入配置

service cron reload

批量处理:

cron启动后,读取/etc/crontab文件,会通过run-parts命令定时运行四个目录下的所有脚本
可根据需求更改/etc/crontab文件内的时间(默认时间查看/etc/crontab文件)

/etc/cron.hourly    目录下的脚本会每个小时执行一次

/etc/cron.daily    目录下的脚本会每天执行一次

/etc/cron.weekly    目录下的脚本会每周执行一次

/etc/cron.mouthly    目录下的脚本会每月执行一次

脚本示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
//创建脚本
vim /etc/cron.hourly/test

//内容:
// #!/bin/sh
// echo 'hello' >> /tmp/testCron.txt

//更改权限(如果需要)
sudo chmod +x /etc/cron.hourly/test

//查看脚本是否会被执行(如果需要)
sudo run-parts --report --test /etc/cron.hourly

打开crontab日志:

1.修改rsyslog

vim /etc/rsyslog.d/50-default.conf

#cron.*              /var/log/cron.log #将cron前面的注释符去掉 

2.重启rsyslog

service rsyslog restart

3.查看crontab日志

vim /var/log/cron.log 

注意:

创建脚本(必要条件)
    1) 可执行文件(#!/bin/sh或#!/bin/bash等)
    2) 匹配Debian cron脚本名称空间(^[a-zA-Z0-9_-]+$)
    3) 执行权限(如果没有它就不会运行sudo chmod +x /etc/cron.hourly/test)
ubuntu默认没打开crontab日志

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!